我正在尝试做这样的事情:
public String evaluateString(String s){
Pattern p = Pattern.compile("someregex");
Matcher m = p.matcher(s);
while(m.find()){
m.replaceCurrent(methodFoo(m.group()));
}
}
问题是没有replaceCurrent方法。也许有一个我忽略的等价物。基本上我想用匹配调用的方法的返回值替换每个匹配。任何提示将不胜感激!
答案 0 :(得分:7)
您似乎在寻找Matcher#appendReplacement
和Matcher#appendTail
。
appendReplacement
会做两件事:
appendTail
会在当前匹配后添加放置的缓冲区文本。
Pattern p = Pattern.compile("someregex");
Matcher m = p.matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, methodFoo(m.group()));
}
m.appendTail(sb);
String result = sb.toString();