如何检查字符串中是否存在某个字符?

How to check if a certain character is present in the String?

我写了下面的代码来在下面的字符串中找到关键字 co_e,其中 _ 代表任何其他字符。

如果我将字符串更改为 "aaacodebbb""codexxcode" 效果很好 但是如果我将它更改为 "xxcozeyycop" 它会抛出 StringIndexOutOfBoundsException

public int countCode(String str) {
    int count = 0;
    String result = "";
    boolean yes = true;
    for (int i = 0; i < str.length(); i++) {
        // yes = str.charAt(i+3);
        if (str.length() >= 3) {
            if (str.charAt(i) == 'c' && str.charAt(i + 1) == 'o' && str.charAt(i + 3) == 'e')
                count++;
        }
    }
    return (count);
}

在循环中,您正在检查访问 i+3。因此,当 i 位于倒数第 4 个位置时,您必须停止。

if(str.length()>= 3)替换为if(str.length()>= 3 && str.length() - i >3)

您可以将以下内容作为 for 循环中的第一个条件:

if(str.length() - i <=3){
    break;
}

您的越界错误发生在这一行:

if (str.charAt(i) == 'c' && str.charAt(i + 1) == 'o' && str.charAt(i + 3) == 'e')

错误发生在str.charAt(8) for str = "xxcozeyycop",因为str.length()是11,而str.charAt(11)明显越界(所以都是str.charAt(str.length()))

这是一种可能的解决方案。请注意,如果 str.length() < 4,则 for 循环不能 运行,因为 i + 3 将始终越界。此外,当 i == str.length() - 4 用于所有长度超过四个字符的字符串时,i+3 将等于字符串的最后一个索引 str.length() - 1.

for (int i = 0; i < str.length() - 3; i++) {
    char c1 = str.charAt(i);
    char c2 = str.charAt(i + 1);
    char c4 = str.charAt(i + 3);

    if (c1 == 'c' && c2 == 'o' && c4 == 'e')
        count++;
}