您如何简化所有这些条件?
String s = "The wold is big"
if(s.contains("is") || s.contains("are") || s.contains("was") || s.contains("were"))
{
return s;
}
由于我必须检查几个这样的情况,有没有办法简化所有这些条件?
答案 0 :(得分: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)) {...}
答案 1 :(得分:3)
您可以使用matches
String
方法使用正则表达式
<强>样品:强>
String s = "The wold is big";
if (s.matches("(.*)(is|are|was|were)(.*)")) {
System.out.println("lawl");
}
答案 2 :(得分:0)
实际上并没有更快的方法。只有当你拥有很多它们时,将它们放入数组并遍历数组才会更清晰。
这里也回答: Test if a string contains any of the strings from an array
答案 3 :(得分: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;
}