java - 在 Java 中将正则表达式用于 switch 语句

标签 java regex switch-statement

void menu() {
    print();
    Scanner input = new Scanner( System.in );
    while(true) {
        String s = input.next();
        switch (s) {
        case "m": print(); continue;
        case "s": stat(); break;
        case "[A-Z]{1}[a-z]{2}\\d{1,}": filminfo( s ); break;
        case "Jur1": filminfo(s); break; //For debugging - this worked fine
        case "q": ; return;
        }
    }
}

似乎我的正则表达式已关闭,或者我没有在案例陈述中正确使用它。我想要的是一个字符串: 刚好以一个大写字母开头,后跟两个小写字母,后跟至少一位数字。

我检查了正则表达式 API 并尝试了三种变体(贪婪、不情愿和所有格量词),但不知道它们的正确用法。还检查了 String 的方法,但没有找到似乎与我的需求相关的方法。

最佳答案

您不能将正则表达式用作 switch case。 (想一想:Java 怎么知道你是想匹配字符串 "[A-Z]{1}[a-z]{2}\\d{1,}" 还是正则表达式?)

在这种情况下,您可以尝试在默认情况下匹配正则表达式。

    switch (s) {
        case "m": print(); continue;
        case "s": stat(); break;
        case "q": return;
        default:
            if (s.matches("[A-Z]{1}[a-z]{2}\\d{1,}")) {
                filminfo( s );
            }
            break;
    }

(顺便说一句,这只适用于 Java 7 及更高版本。在此之前没有打开字符串。)

关于java - 在 Java 中将正则表达式用于 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8088370/

相关文章:

javascript - JavaScript switch case 中的运算符

java - Map.Entry::getKey 在 groupby 下抛出错误

java - 具有重复值的快速排序

java - Spring MVC : application context is running twice

javascript - 在 PhpStorm/WebStorm 中自动格式化包含带有缩进的 HTML 的字符串数组

javascript - 比较 a-z 或 A-Z 并使用 switch JavaScript 函数给出输出

java - 如何在 Java 中将字符串值转换为自定义模型对象?

带可选参数的 python re.search

regex - 用正则表达式替换字符串中的 [ 和 ]

delphi - Delphi:3个工具按钮-3帧=切换