1

你会如何简化所有这些条件?

String s = "The wold is big"

if(s.contains("is") || s.contains("are") || s.contains("was") || s.contains("were")) 
{ 
    return s;
}

由于我必须检查几个这样的情况,有没有办法简化所有这些条件?

4

4 回答 4

4

我会为此编写一个实用方法:

public static boolean containsAny(String s, String... words) {
    for (String word : words) {
        if (s.contains(word))
            return true;
    }
    return false;
}

现在:

if (containsAny(s, "is", "are", "was", "were")) {...}

Java 8 替代方案:

if (Arrays.asList("is", "are", "was", "were").stream().anyMatch(s::contains)) {...}
于 2014-07-29T21:55:33.750 回答
3

您可以使用regexmatches方法来使用String

样本:

String s = "The wold is big";

    if (s.matches("(.*)(is|are|was|were)(.*)")) {
        System.out.println("lawl");
    }
于 2014-07-29T22:00:04.737 回答
0

您可以传递一个值数组来检查:

public boolean Contains(String[] list, String elem) {
    for (String s: list){
        if(elem.contains(s)) {
            return true;
        }
    }
    return false;
}

String s = "The wold is big"
String[] conditions = {"is","are","was","were"}; 

if(Contains(conditions,s)) 
{ 
    return s;
}
于 2014-07-29T22:05:00.490 回答
0

真的没有更快的方法来做到这一点。只有当你有很多它们时,将它们放在一个阵列中并在阵列上走会更干净。

还在这里回答: 测试字符串是否包含数组中的任何字符串

于 2014-07-29T21:58:02.650 回答