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/