我想在for循环中使用IndexOf,以便可以删除短语中某个单词/字符的所有实例,但是我的代码仅删除了第一个实例,即使我认为应该删除其他实例也是如此。 这是我的代码:
String phrase = "yes no YES NO";
String del = "no";
for (int i=0;i<phrase.length();i++) {
if (phrase.indexOf(del) == i) {
System.out.print("");
}
else
System.out.print(phrase.charAt(i));
}
上面的代码给了我这个结果:
yes o YES NO
我希望我的代码给我
yes YES
但是我不明白为什么indexOf只删除一个字符,并且我不明白如何在字符串中使用.equalsIgnoreCase来删除“ NO”。我应该如何更改代码以获得此答案?
答案 0 :(得分:2)
indexOf
用于在字符串中查找特定的字符。如果您想删除字符串中的特定值,建议您使用replaceAll
方法。
此外,请注意indexOf
和replaceAll
都区分大小写。这意味着“ no”和“ no”不同,因为“ NO”是大写字母(这也是保持“ NO”不变的原因)。
将target.replaceAll("(?i)" + Pattern.quote("text"), "");
用于不区分大小写的变体(如this中所述)。
答案 1 :(得分:0)
尝试一下:
String newPhrase = phrase.replaceAll(del," ");
,然后打印newPhrase。
此外,“ no”和“ NO”是两个不同的值。一个是大写,另一个是小写。因此,如果您不希望代码区分大小写,则需要在“短语”的小写字母中检查“ del”的小写字母。