for循环中的IndexOf只删除一个字符



我想在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和我的字符串来删除";否";。我应该如何更改代码才能得到这个答案?

indexOf用于在字符串中查找特定的字符。如果您想删除String中的特定值,我建议使用replaceAll方法。

另外,请注意,indexOfreplaceAll都区分大小写。这意味着";否";以及";否";是不同的,因为";否";是大写的(这也是"否"保持不变的原因(。

target.replaceAll("(?i)" + Pattern.quote("text"), "");用于不区分大小写的变体(如本文所述(。

试试这个:

String newPhrase = phrase.replaceAll(del," ");

然后打印newPhrase。

此外;否";以及";否";是两个不同的值。一个是大写,另一个是小写。因此,如果你不想让你的代码区分大小写,你需要检查小写字母";del";小写的";短语";。

最新更新