我可以在switch案例中匹配表达式的不同部分吗



我正在尝试使用switch语句将字符串的一部分与不同的值进行匹配。

我的问题是,我需要匹配的字符串部分的长度不同,下面的例子描述了我试图做的事情

String s = "ABC";
switch(s) {
case s.substring(0,1).equals("A"):
//Do something
break;
case s.substring(0,2).equals("AB"):
//Do something else
break;
default:
//Do something other than else
break;
}

我试过使用java.util.regex,但真的不知道如何实现它。

额外的问题:只使用一系列if语句会更好吗?我希望能够轻松有效地扩大条件。

您可以将String#matches与if-else逻辑一起使用:

if (s.matches("ABC.*")) {
// do something
{
else if (s.matches("AB.*")) {
// do something else
}
else if (s.matches("A.*")) {
// do something else
}
else {
// no match
}

请注意,我们首先检查更具体的匹配,然后回退到捕获不太具体的匹配。如果我们按相反的顺序进行检查,那么ABCABD都将被A逻辑的启动捕获,并且不会发生更具体的匹配。

相关内容

最新更新