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

Java for循环中的IndexOf仅删除一个字符,java,Java,我想在for循环中使用IndexOf,这样我就可以删除短语中单词/字符的所有实例,但我的代码只删除第一个实例,即使我认为它应该删除其他实例。 这是我的密码: String phrase = "yes no YES NO"; String del = "no"; for (int i=0;i<phrase.length();i++) { if (phrase.indexOf(del) == i) {

我想在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 YES
但我不明白为什么indexOf只删除一个字符,我也不明白如何使用.equalsIgnoreCase和我的字符串来删除“否”。我应该如何更改代码以获得此答案?

试试以下方法:

String newPhrase = phrase.replaceAll(del," ");
然后打印新短语

此外,“no”和“no”是两个不同的值。一个是大写,另一个是小写。因此,如果您不希望代码区分大小写,则需要在“短语”的小写字母中检查“del”的小写字母。

尝试以下方法:

String newPhrase = phrase.replaceAll(del," ");
然后打印新短语


此外,“no”和“no”是两个不同的值。一个是大写,另一个是小写。因此,如果您不希望代码区分大小写,则需要在“短语”的小写部分检查“del”的小写部分。

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

另外,请注意
indexOf
replaceAll
都区分大小写。这意味着“no”和“no”是不同的,因为“no”是大写的(这也是“no”保持不变的原因)


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

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

另外,请注意
indexOf
replaceAll
都区分大小写。这意味着“no”和“no”是不同的,因为“no”是大写的(这也是“no”保持不变的原因)

使用
target.replaceAll((?i)“+Pattern.quote(“text”),”)用于不区分大小写的变体(如后文所述)