I\'m looking for a very simple way of getting the equivalent of something like the following JavaScript code. That is, for each match I would like to call a certain
When allowing Java 8 you can use Lambda-Expressions, to have a JavaScript like replace:
String result = StringReplacer.replace("Hello World!", Pattern.compile("\\S+"), m -> ("" + m.group().length()));
StringReplacer.java:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringReplacer {
public static String replace(String input, Pattern regex, Function callback) {
StringBuffer resultString = new StringBuffer();
Matcher regexMatcher = regex.matcher(input);
while (regexMatcher.find()) {
regexMatcher.appendReplacement(resultString, callback.apply(regexMatcher));
}
regexMatcher.appendTail(resultString);
return resultString.toString();
}
}
Source: http://www.whitebyte.info/programming/string-replace-with-callback-in-java-like-in-javascript