equalsIgnoreCase 不工作(Java)

equalsIgnoreCase not working (Java)

这是我的一种方法,它扫描 TXT 文件并计算单词 "Jan" 的出现次数,它应该是 1,因为 txt 文件中的日期是 09-Jan-2018

static int getFirstMonth() throws FileNotFoundException {
    File file_to_scan = new File("happyFile.txt");
    Scanner scannerInput = new Scanner(file_to_scan);
    int count = 0;
    while (scannerInput.hasNext()) { 
        String nextWord = scannerInput.next(); 
        if (nextWord.equalsIgnoreCase("Jan")) {
            count++;      
        }
    }
    return count;
}

Here 是 txt 文件,任何人都想看一下。

如果我使用 nextWord.equals("Jan") 我会理解为什么它没有被提取,因为它不是完整的单词,但 ignoreCase 不应该忽略它并提取 3 个连续的字母吗?谁能帮我解决这个问题。

String.equals() 将比较整个单词。在这种情况下,Scanner.next() 用白色 space 分隔单词,因此它将“09-Jan-2018”读入 nextWord

如果您想查看 nextWord 是否包含 "Jan",请考虑使用 String.contains() 之类的东西,并且为了不区分大小写,您可以在比较之前将每个字符串转换为小写。

例如:if (nextWord.toLowerCase().contains("jan"))