Java:从StringBuilder中删除String

14
我想从 StringBuilder 中删除字符串。
示例。
String aaa = "sample";
String bbb = "sample2";
String ccc = "sample3";

在另一个部分

StringBuilder ddd = new StringBuilder();
ddd.append(aaa);
ddd.append(bbb);
ddd.append(ccc);

我想检查StringBuilder ddd是否包含String aaa并将其删除

if (ddd.toString().contains(aaa)) {
    //Remove String aaa from StringBuilder ddd
}

这是否可能?或者有其他方法可以做到这一点吗?


2
请看这个问题 - Bruno Toffolo
2
为什么一开始要添加它?我假设这是一个非常牵强的示例:在添加“aaa”之前,为什么不能对任何条件进行检查? - Jeroen Vannevel
@devnull。这并不完全是重复,尽管很接近。 - Mad Physicist
@JeroenVannevel. 并非刻意创造的。StringBuilder可以从预先存在的字符串或其他源创建。删除其部分可能不是处理事物的最佳方式,正如您所指出的那样,但在某些情况下可能是唯一的选择。 - Mad Physicist
4个回答

12

试一试

    int i = ddd.indexOf(aaa);
    if (i != -1) {
        ddd.delete(i, i + aaa.length());
    }

1
你需要在第二个参数中执行 i + aaa.length(),因为 StringBuilder#delete 方法接受的是一个 end 索引,而不是长度。 - ajp15243

5

试试这个

public void delete(StringBuilder sb, String s) {
    int start = sb.indexOf(s);
    if(start < 0)
        return;

    sb.delete(start, start + s.length());
}

2
从ddd创建一个字符串并使用replace()函数。
ddd.toString().replace(aaa,"");

0

可以这样做:

ddd.delete(from, to);

而且,为了提高性能,请使用 indexOf 而不是 toString().contains - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接