首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用regex作为switch-statement

在Java中使用regex作为switch-statement
EN

Stack Overflow用户
提问于 2011-11-11 08:41:49
回答 2查看 30.8K关注 0票数 23
代码语言:javascript
复制
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;
        }
    }
}

似乎是我的正则表达式关闭了,或者我没有在case语句中正确使用它。我想要的是一个字符串:恰好以一个大写字母开头,后面紧跟两个小写字母,小写字母后面至少跟一个数字。

我已经检查了regex API,并尝试了这三种变体(贪婪、不情愿和占有型量词),但不知道它们的正确用法。我还检查了字符串的方法,但没有找到适合我需要的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-11 08:49:54

您不能使用正则表达式作为切换用例。(想想看: Java如何知道您想要匹配字符串"[A-Z]{1}[a-z]{2}\\d{1,}"还是正则表达式?)

在本例中,您可以尝试匹配默认情况下的正则表达式。

代码语言:javascript
复制
    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和更高版本。在此之前,没有对字符串进行切换。)

票数 41
EN

Stack Overflow用户

发布于 2011-11-11 08:55:29

我不认为在切换情况下可以使用正则表达式。

将切换表达式中的字符串与与每个

标签关联的表达式进行比较,就好像正在使用String.equals方法一样。

有关详细信息,请参阅http://download.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8088370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档