It's hideous, but I think it does the trick:
public static String subst(String string, String regex, String repl) {
Pattern pat = Pattern.compile(regex);
Matcher m = pat.matcher(string);
StringBuilder sb = new StringBuilder();
int prevend = 0;
while (m.find()) {
int start = m.start(0);
int end = m.end(0);
String val = m.group(0);
sb.append(string.substring(prevend, start));
sb.append(repl); // sb.append(transform(val));
prevend = end;
}
sb.append(string.substring(prevend));
return sb.toString();
}
That's way too complicated. This is easier:
public static String subst(String string, String regex, String repl) {
Pattern pat = Pattern.compile(regex);
Matcher m = pat.matcher(string);
return m.replaceAll(repl);
}
or even
public static String subst(String string, String regex, String repl) {
return Pattern.compile(regex).matcher(string).replaceAll(repl);
}
Re:Even easier
ChrisDolan on 2009-02-24T05:28:45
Or even much better:
public static String subst(String string, String regex, String repl) {
return string.replaceAll(regex, repl);
}Re:Even easier
jdavidb on 2009-02-24T15:07:06
Doesn't work if you need the variant in the comments, where you transform the matched expression to generate the replacement.