如何测试字符串以查看它是否包含数组中的任何字符串?
而不是使用
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).
items.stream().anyMatch(inputStr::contains)
.filter(inputStr::contains).findAny()如果您希望返回匹配的字符串,也可以使用。
.filter(inputStr::contains).findAny()
重要提示: 上面的代码可以使用parallelStream(),但大多数情况下这实际上会影响性能。
parallelStream()
原始的稍微过时的答案:
这是一个(非常基本的)静态方法。请注意,比较字符串区分大小写。使其不区分大小写的一种 原始 方法是在输入和测试字符串上调用toLowerCase()or 。toUpperCase()
toLowerCase()
toUpperCase()
如果您需要做比这更复杂的事情,我建议您查看Pattern和Matcher类并学习如何做一些正则表达式。一旦你理解了这些,你就可以使用这些类或String.matches()辅助方法。
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; }