小编典典

测试字符串是否包含数组中的任何字符串

all

如何测试字符串以查看它是否包含数组中的任何字符串?

而不是使用

if (string.contains(item1) || string.contains(item2) || string.contains(item3))

阅读 59

收藏
2022-08-01

共1个答案

小编典典

编辑:这是使用 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(),但大多数情况下这实际上会影响性能。


原始的稍微过时的答案:

这是一个(非常基本的)静态方法。请注意,比较字符串区分大小写。使其不区分大小写的一种 原始
方法是在输入和测试字符串上调用toLowerCase()or 。toUpperCase()

如果您需要做比这更复杂的事情,我建议您查看PatternMatcher类并学习如何做一些正则表达式。一旦你理解了这些,你就可以使用这些类或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;
}
2022-08-01