我正在寻找一种非常简单的方法来获得与以下JavaScript代码类似的东西。也就是说,对于每个匹配项,我想调用某个转换函数并将结果用作替换值。
var res = "Hello World!".replace(/\S+/, function (word) {
// Since this function represents a transformation,
// replacing literal strings (as with replaceAll) are not a viable solution.
return "" + word.length;
})
// res => "5 6"
只有..在Java中。并且,优选地,作为可重复使用的“单一方法”或"template"。
最佳答案
您的答案在Matcher#appendReplacement文档中。只需将您的函数调用放入while循环中即可。
Pattern p = Pattern.compile("cat");
Matcher m = p.matcher("one cat two cats in the yard");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, "dog");
}
m.appendTail(sb);
System.out.println(sb.toString());
关于java - Java 7中的正则表达式替换功能评估等效于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19737653/