学习记录,这俩玩意之前没遇到过,也没用过,后来发现在变量替换场景下真的挺好用的; 参考:blog.zzkun.com/archives/89
用法:
appendReplacement(StringBuffer sb, String replacement):这个方法会把匹配到的内容替换为replacement,并且把从上次替换的位置到这次替换位置之间的字符串也拿到,然后,加上这次替换后的结果一起追加到StringBuffer里。
appendTail(StringBuffer sb):sb是一个StringBuffer,这个方法是把最后一次匹配到内容之后的字符串追加到StringBuffer中。
栗子:
public class Test {
public static void main(String args[]) {
Pattern pattern = Pattern.compile("a|b");
Matcher m = pattern.matcher("abcabca@126.com");
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, m.group().toUpperCase());
System.out.println(sb.toString());
}
m.appendTail(sb);
System.out.println(sb.toString());
}
}
运行结果:
A
AB
ABcA
ABcAB
ABcABcA
ABcABcA@126.com
一般全部替换的用法
while(m.find()){
m.appendReplacement(sb,replaceContext);
}
m.appendTail(sb);