例如,赋值是从字符串“a
”中删除char'I am Sam am I Sam
',这是我到目前为止的一些代码:
public String removeLetters() {
String cleaned=sentence;
StringBuilder builder = new StringBuilder(cleaned);
while(cleaned.indexOf(lookFor) != -1) {
builder.deleteCharAt(cleaned.indexOf(lookFor));
}
return builder.toString();
}
当没有while循环时,此方法返回正常(尽管它只删除一个char),但是当我使用while循环运行它时,我得到OutOfBounds
错误。
答案 0 :(得分:1)
改变这个:
while(cleaned.indexOf(lookFor) != -1) {
builder.deleteCharAt(cleaned.indexOf(lookFor));
}
用这个:
while(builder.indexOf(Character.toString(lookFor)) != -1) {
builder.deleteCharAt(builder.indexOf(Character.toString(lookFor)));
}
答案 1 :(得分:1)
您可以使用String#replace
方法直接执行此操作:
String cleaned = "I am Sam am I Sam";
cleaned = cleaned.replace("a", "");
System.out.println(cleaned); // I m Sm m I Sm
答案 2 :(得分:0)
while
循环中的条件是cleaned
StringBuilder
中的索引,但是您使用相同的索引来删除{中的字符} {1}} - 删除第一个字符后,它们不再匹配。
简而言之:
builder
答案 3 :(得分:0)
尝试这个。
cleaned.replaceAll(lookFor,"");
答案 4 :(得分:0)
必须从构建器中删除,而不是从源字符串中删除。此外,您最初有一个无限循环,尝试修改构建器字符串,但只检查源字符串,这不会更改。这编译并运行良好:
public String removeLetters()
{
String lookFor = "a";
String original="I am Sam am I Sam";
StringBuilder builder = new StringBuilder(original);
while(builder.indexOf(lookFor) != -1) {
builder.deleteCharAt(builder.indexOf(lookFor));
}
return builder.toString();
}