前者是将当前匹配子串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字符串段添加到一个 StringBuffer 对象里。

后者则将最后一次匹配工作后剩余的字符串添加到一个 StringBuffer 对象里。

示例:

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
}

 


感谢大家的阅读, 如有疑问可以加我微信