Кусочек строчки

Часто вывает необходимо вырезать кусочек из строки между определёными символами(наборами символов). Или вот тоже нетривиальная задача: вырезать что нибудь между чем нибудь, но обязательно кторое идёт после чего нибудь %)

Обычно для этого используют регекспы.
Но вот дёрнуло меня что то(что то в данном случае лень разбираться почему конкретные регекспы не работают) написать пару таких методов.

[cc lang=”java”]
private String cutBetween(String src, String from, String to, int startPos) {
int p = src.indexOf(from, startPos);
if (p == -1) return “”;
String chunk = src.substring(p + from.length());
p = chunk.indexOf(to);
if (p == -1) return chunk;
return chunk.substring(0, p);
}

private String cutBetween(String src, String from, String to, String startPos) {
int sp = src.indexOf(startPos);
if (sp == -1) return “”;
return cutBetween(src, from, to, sp + startPos.length());
}

private String cutBetween(String src, String from, String to) {
return cutBetween(src, from, to, 0);
}
[/cc]

Методы пришлось перегрузить для большей гибкости.

Вызываеться просто:
[code lang=”java”]cutBetween(src, from, to[, startPos]);[/code]
src – исходная строка для растерзаний
from – строка после которой начать вырезать
to – строка перед которой остановиться
startPos – не обязательный аргумент который представляет собой позицию(или строку) после которой нужно искать откуда резать.

На примере:
пусть будет строка <input type=”hidden” name=”boo” value=”bugaga”/>
то вызов cutBetween(строка, “type=\””, “\””);
вернёт hidden

Или ещё пример:
пусть будет строка one 111 <1> two 222 <2> three 333 <-3-> four 4444 <4>
вызываем cutBetween(строка, “<“, “>”, “three”);
и получаем -3-