【发布时间】:2014-03-20 00:32:01
【问题描述】:
我有一个像 "4 + 5 = 9;" 这样的字符串,我想在找到的每个数字上加一个。
我想对每个匹配项使用正则表达式和转换函数。
我知道如何在 Java javadoc 和 this answer 中。
我想知道 Java 8 中是否有这方面的新内容。
编辑: 这是我最好的尝试:
private static String regexTransform(String regex, String input,
Function<String, String> function) {
Matcher m = Pattern.compile(regex).matcher(input);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, function.apply(m.group()));
}
m.appendTail(sb);
return sb.toString();
}
String res = regexTransform("[0-9]+", "4 + 5 = 9;", s-> String.valueOf(Long.parseLong(s) + 1));
System.out.println(res); // 5 + 6 = 10
【问题讨论】:
-
Java 8 docs 在这方面似乎没有任何新内容。
-
看起来不错,认为这是正确的方法。
标签: java regex replace transformation java-8