m.appendReplacement(sb, replacement)
sb是为一个StringBuilder,
replacement是等于替换进去sb的内容,并且将上次匹配到的内容到此次匹配到的内容之间的所有字符全部append到sb中,(假如是第一次匹配的内容,则是开头到此次匹配到的)
m.appendTail(sb)
作用将匹配到的内容之后所有的字符全部append到sb当中
两个方法经常结合起来,将字符串中指定的内容替换
public static void fun3() {
String s = "the quick brown fox jumps over the lazy dog.";
Pattern p = Pattern.compile("\\wo\\w");
Matcher m = p.matcher(s);
StringBuilder sBuilder=new StringBuilder();
String []strings= {"aaa","bbb","ccc"};
Integer i=0;
while (m.find()) {
m.appendReplacement(sBuilder, strings[i]);
i++;
}
m.appendTail(sBuilder);
System.out.println(sBuilder.toString());
}
结果
the quick baaan bbb jumps over the lazy ccc.
此方法与String.replaceAll()
的不同是,String.replaceAll()
只能将各个部分替换为同一的内容,而此方法可以实现将各个部分替换为不同的内容,经常是使用map将被替换的部分与替换上的内容联系起来