我想在每次出现此子字符串时从字符串缓冲区中删除一个子字符串,到目前为止,我所做的是:

  public static void main(String[] args) {

        String text = "Alice Bob Alice Bob Alice Bob";
        String substr = "Alice";
        StringBuffer strbuf = new StringBuffer(text);
        strbuf.indexOf(substr);
        strbuf.lastIndexOf(substr);
        while (strbuf != null) {
                strbuf.delete(strbuf.indexOf(substr), strbuf.indexOf(substr) + substr.length());
                System.out.println(strbuf.toString());
            }
}


我想删除所有出现的“爱丽丝”。但是它给出了以下错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1


我认为该错误在while行中。
有任何想法吗?

最佳答案

您的问题是您试图删除一个不存在的子字符串(在删除了它的所有实例之后)。您必须将循环界限更改为类似

while(strbuf != null && strbuf.indexOf(substr) != -1)

关于java - 使用Java从字符串缓冲区中删除子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10130391/

10-11 02:16