【发布时间】:2023-03-03 12:03:01
【问题描述】:
我想在每次出现这个子字符串时从字符串缓冲区中删除一个子字符串,到目前为止我所做的是:
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 行中的错误。 有什么想法吗?
【问题讨论】:
-
你考虑过只使用 String#replaceAll(String old, String new") 吗? text.replaceAll("Alice", "");
-
strbuf什么时候会成为null?您的 while 循环将永远存在。
标签: java stringbuffer