逻辑OR与字符串

时间:2017-03-10 20:49:23

标签: java logical-operators

我有一个if语句,其中可以满足两个条件之一,但我不想使用嵌套的if

例如,我想要的是什么;

String s;

if(s == "foo" || "bar") {
    // true
} else {
    // false
}

但是,操作符||无法应用于String

有什么方法吗?

6 个答案:

答案 0 :(得分:3)

您可以使用正则表达式:

String s = "foo";
if (s.matches("foo|bar"))
    // true
else
    // false

答案 1 :(得分:2)

应使用

equals()方法来比较Strings

if语句评估为布尔值(truefalse)。 另外,请按照equals比较的顺序颠倒以避免NPE。

String s;

if ("foo".equals(s) || "bar".equals(s)) {

} else {

}

答案 2 :(得分:1)

使用equals来比较Java中的字符串:

String s;

if(s.equals("foo") || s.equals("bar")) {
    // true
} else {
    // false
}

请参阅How do I compare strings in Java?

答案 3 :(得分:1)

只是已经给出的替代方案:

if (Arrays.asList("foo", "bar").contains(s)) {
    // true
} else {
    // false
}

当然,您可以事先构建集合:

Set<String> wordsToMatch = new HashSet<>(Arrays.asList("foo", "bar"));

然后一遍又一遍地使用它:

if (wordsToMatch.contains(s)) {
  // ...

答案 4 :(得分:0)

您正在比较Strings错误。

下面的

显示如何使用Strings类的equals()方法比较String

String s;

if(s.equals("foo") || s.equals("bar")) {
    // true
} else {
    // false
}

Further reading regarding how to compare Strings?

答案 5 :(得分:-1)

if(s.equals("foo") || s.equals("bar")){
   //Your Code
}