将一个字符串与一个表达式中的多个值进行比较

2022-08-31 13:25:05

我有一个 String 变量,具有可能的值 、和 .strval1val2val3

我想使用if语句将(大小写相等)与所有这些值进行比较,例如:str

if("val1".equalsIgnoreCase(str)||"val2".equalsIgnoreCase(str)||"val3".equalsIgnoreCase(str))
{
      //remaining code
}

有没有办法避免使用多个 OR(||) 运算符并在一个表达式中比较值?例如,如下所示:

 if(("val1" OR "val2" OR "val3").equalsIgnoreCase(str)   //this is only an idea.

答案 1

我找到了更好的解决方案。这可以通过正则表达式实现:

if (str.matches("val1|val2|val3")) {
     // remaining code
}

对于不区分大小写的匹配:

if (str.matches("(?i)val1|val2|val3")) {
     // remaining code
}

答案 2

在Java 8+中,你可以使用Stream<T>anyMatch(谓词<?super T>)与类似的东西

if (Stream.of("val1", "val2", "val3").anyMatch(str::equalsIgnoreCase)) {
    // ...
}