如何测试一个字符串以查看它是否包含数组中的任何字符串?
而不是使用
if (string.contains(item1) || string.contains(item2) || string.contains(item3))
最佳答案
编辑:这是使用 Java 8 Streaming API 的更新。干净多了。仍然可以与正则表达式结合使用。
public static boolean stringContainsItemFromList(String inputStr, String[] items) {
return Arrays.stream(items).anyMatch(inputStr::contains);
}
另外,如果我们将输入类型更改为 List 而不是数组,我们可以使用 items.stream().anyMatch(inputStr::contains)
。
如果您希望返回匹配的字符串,也可以使用 .filter(inputStr::contains).findAny()
。
重要提示: 上面的代码可以使用 parallelStream()
来完成,但大多数时候这实际上会影响性能。见 this question for more details on parallel streaming .
原始答案略过时:
这是一个(非常基本的)静态方法。请注意,比较字符串区分大小写。使其不区分大小写的原始方法是在输入字符串和测试字符串上调用 toLowerCase()
或 toUpperCase()
。
如果您需要做比这更复杂的事情,我建议您查看 Pattern和 Matcher类(class)和学习如何做一些正则表达式。一旦你理解了这些,你就可以使用这些类或 String.matches()
辅助方法。
public static boolean stringContainsItemFromList(String inputStr, String[] items)
{
for(int i =0; i < items.length; i++)
{
if(inputStr.contains(items[i]))
{
return true;
}
}
return false;
}
关于java - 测试字符串是否包含数组中的任何字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8992100/