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

时间:2020-11-05 18:34:44

标签: 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) {
            System.out.print("");
        }
        else 
            System.out.print(phrase.charAt(i));
    }

上面的代码给了我这个结果:

yes o YES NO

我希望我的代码给我

yes YES

但是我不明白为什么indexOf只删除一个字符,并且我不明白如何在字符串中使用.equalsIgnoreCase来删除“ NO”。我应该如何更改代码以获得此答案?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

尝试一下:

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

,然后打印newPhrase。

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