我正在尝试做这样的事情:
public String evaluateString(String s){
Pattern p = Pattern.compile("someregex");
Matcher m = p.matcher(s);
while(m.find()){
m.replaceCurrent(methodFoo(m.group()));
}
}
Run Code Online (Sandbox Code Playgroud)
问题是没有replaceCurrent方法.也许有一个我忽略的等价物.基本上我想用匹配调用的方法的返回值替换每个匹配.任何提示将不胜感激!
看来你正在寻找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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |