我正在尝试使用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
}
请注意,我们首先检查更具体的匹配,然后回退到捕获不太具体的匹配。如果我们按相反的顺序进行检查,那么ABC
和ABD
都将被A
逻辑的启动捕获,并且不会发生更具体的匹配。