扫描文件并匹配字符串 Java(寻找更好的方法)

Scanning a file and matching strings Java ( Looking for a better way )

我正在创建一个简单的 java 程序,它扫描文件并查找特定的字符串,我已经在一定程度上工作了,但我确信有一种更有效和更好的方法它,我正在使用 IF contains 方法来比较许多不同的字符串,但是我觉得这是一种不好的练习方式,并且想知道是否有人可以告诉我我还可以尝试什么?

    while (sc.hasNextLine()) {

          readLine = new Scanner(sc.nextLine());
          x = readLine.nextLine();
          numberOfLines++;  


            if (x.contains("a")) {
                numberOfConsonants++;
            }
            if (x.contains("A")) {
                numberOfConsonants++;
            }
            if (x.contains("e")) {
                numberOfConsonants++;
            }
            if (x.contains("E")) {
                numberOfConsonants++;
            }
            if (x.contains("i")) {
                numberOfConsonants++;
            }
            if (x.contains("I")) {
                numberOfConsonants++;
            }
            if (x.contains("o")) {
                numberOfConsonants++;
            }
            if (x.contains("O")) {
                numberOfConsonants++;
            }
            if (x.contains("u")) {
                numberOfConsonants++;
            }
            if (x.contains("U")) {
                numberOfConsonants++;
            }
}

您可以尝试这样的操作:

Set<String> consonants = new HashSet<>();
consonants.add("a");
consonants.add("e");
consonants.add("i");
consonants.add("o");
consonants.add("u");

while (sc.hasNextLine()) {

          readLine = new Scanner(sc.nextLine());
          x = readLine.nextLine();
          numberOfLines++;  

          if(consonants.contains(x.toLowerCase())) { 
              consonants++;
          }
}

这将允许您放置字母并在稍后阶段匹配它们。集合应该为您提供一种相当快速的方法来检查项目是否存在。

附带说明一下,您匹配的是元音字母,而不是辅音字母(这可能会在您的代码中造成混淆)。

您可以了解正则表达式(例如在 oracle 教程中:https://docs.oracle.com/javase/tutorial/essential/regex/

正则表达式允许您"match" 字符串的模式。 并且您可以指定匹配所有元音的模式 "in one shoot";从而将您的级联 if 语句合并为一个语句。

(我猜你是指元音字母,而不是辅音字母?)