java - 使用 Java 从字符串缓冲区中删除子字符串

标签 java stringbuffer

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

  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());
            }
}

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

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/

相关文章:

java - 为什么我的方法无法按字母顺序对链接列表进行排序?

java - Gson:如何更改枚举的输出

java - 计算创建的字符串对象的数量

java - StringBuffer.append() 的未知行为

java - StringBuffer 未完全读取

java - 流程,如何使用Outputstream发送两次消息

java - 变量不存在?

java - 如何将字符串缓冲区存储到字符串数组中?

java - StringBuffer 的最大大小

java - Windows 任务计划程序立即结束