小编典典

Java 7中的正则表达式替换功能评估等效于什么?

java

我正在寻找一种 非常简单的 方法来获得与以下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中。并且,优选地,作为可重复使用的“单一方法”或“模板”。


阅读 216

收藏
2020-09-16

共1个答案

小编典典

您的答案在Matcher#appendReplacement文档中。只需将您的函数调用放入while循环中即可。

[appendReplacement方法]旨在与appendTail和find方法一起在循环中使用。例如,以下代码将院子里的两只狗写到标准输出流中:

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());
2020-09-16