Java 使用 contains 或 equals 方法检查字符串是否包含特定范围内的特定字母

Java checking if string contains certain letters with a certain range with contains or equals method

import.java.util.Scanner;

public class Test{
   public static void main(String[] args){
   Scanner sc = new Scanner(System.in)
   String operation = sc.nextLine();
   }
}

当我想看的时候,如果字符串操作包含某些字母,我可以写f.ex。

    if(operation.contains("a") || operation.contains("b")){
        System.out.println("This is not a valid choice. Please retry!");
    }

但我想知道要写什么,如果字符串包含字母,例如从a到k。如果我用 || 写它每一次,它都没有效率。 编辑:我只被允许使用包含和等于的方法。

尝试使用正则表达式:

if (operation.matches(".*[a-k].*") {
    ...
}

备选方案:

boolean contains = false;
for (char charToCheck = 'a'; charToCheck <= 'k'; charToCheck++) {
    if (operation.indexOf(charToCheck) >= 0) {
        // found something
        contains = true;
        break;
    }
}

稍后更新

哦,indexOf()也不行。使用嵌套循环的版本:

boolean found = false;
for (char ch : operation.toCharArray()) {
    for (ch charToCheck = 'a'; charToCheck <= 'k'; charToCheck++) {
        if (ch == charToCheck) {
            found = true;
            break;
        }
    }
    if (found) {
        break;
    }
}
char[] chars = operation.toCharArray();
for (int i = 0; i < chars.length; i++) {
    char val = chars[i];
    switch(val) {
        case a:
        case b:
        case c:
        case d:
        case e:
        case f:
        case g:
        case h:
        case i:
        case j:
        case k:
            System.out.println("This is not a valid choice. Please retry!");
            break;
     }
}