我想在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
方法。
另外,请注意,indexOf
和replaceAll
都区分大小写。这意味着";否";以及";否";是不同的,因为";否";是大写的(这也是"否"保持不变的原因(。
将target.replaceAll("(?i)" + Pattern.quote("text"), "");
用于不区分大小写的变体(如本文所述(。
试试这个:
String newPhrase = phrase.replaceAll(del," ");
然后打印newPhrase。
此外;否";以及";否";是两个不同的值。一个是大写,另一个是小写。因此,如果你不想让你的代码区分大小写,你需要检查小写字母";del";小写的";短语";。