Java中变量替换的appendReplacement和appendTail

472 阅读1分钟

学习记录,这俩玩意之前没遇到过,也没用过,后来发现在变量替换场景下真的挺好用的; 参考: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);