是使用appendTail(StringBuffer sb)?

时间:2018-03-01 18:18:08

标签: java append

我在这个惊人的教程here中发现了一个问题。

首先,这是代码:

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class RegexDemo {

private static String REGEX = "a*b";
private static String INPUT = "aabfooaabfooabfoob";
private static String REPLACE = "-";

public static void main(String[] args) {
    Pattern p = Pattern.compile(REGEX);
    Matcher m = p.matcher(INPUT); // get a matcher object
    StringBuffer sb = new StringBuffer();
    while(m.find()){
        m.appendReplacement(sb,REPLACE);
    }
    m.appendTail(sb);
    System.out.println(sb.toString());
}
}

输出:-foo-foo-foo -

看到有关appendTail()方法的文档后:

  

实施终端追加和替换步骤。

     

此方法从附加位置开始读取输入序列中的字符,并将它们附加到给定的字符串缓冲区。它旨在在appendReplacement方法的一次或多次调用之后调用,以便复制输入序列的其余部分。

当我删除m.appendTail(sb);

时,我得到了相同的输出

我无法理解为什么要调用这个方法。我想它是隐含的。不是吗?

0 个答案:

没有答案