matcher.appendReplacement() 与 matcher.appendTail()的区别

? ? ? ? ?matcher.appendReplacement() 与 matcher.appendTail()的区别

要说明这两个方法的区别最简单也最直接的方法就是上例子:

package com.it.test;

?

import java.util.regex.Matcher;

import java.util.regex.Pattern;

?

public class regex_test2 {

?

public static void main(String args[]) {

String mail = "abcabcA@163.com";

Pattern pattern = Pattern.compile("a",Pattern.CASE_INSENSITIVE);

Matcher m = pattern.matcher(mail);

StringBuffer sb = new StringBuffer();

while(m.find())

m.appendReplacement(sb, "b");

//m.appendTail(sb); //注视掉这句的结果是bbcbbcb

System.out.println(sb.toString()); //不注释掉上句的结果是bbcbbcb@163.com

}

?

}

简单的讲讲,用matcher.appendReplacement(?sb, "b")就是在Matcher.find()找到匹配的地方用“b”替换掉然后加进StringBuffer中去,这时后面可能还有字符串但是不匹配的,就像例子中@163.com是匹配到最后一个a结束的地方如果这时输出就是bbcbbcb。?matcher.appendTail()就是把@163.com加上而已

?

文章来自:http://superior-lyh.iteye.com/blog/2257733
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3