What is the equivalent of Regex-replace-with-function-evaluation in Java 7?

后端 未结 4 1985
终归单人心
终归单人心 2020-12-01 12:07

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

4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-01 12:47

    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

提交回复
热议问题