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

标签 java string if-statement

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

而不是使用

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()

如果您需要做比这更复杂的事情,我建议您查看 PatternMatcher类(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/

相关文章:

PHP 意外的 elseif

java - Apache MINA 解码器类解释

java - Pattern.COMMENTS 总是导致 Matcher.find 失败

java - 当我尝试调用主方法之外的方法时出现 NullPointerException

java - 如何收集必须像字符串一样格式化的数字?

javascript - 字符串迭代行为

python - os.path.splitext(file.txt.gz) 到 (file,.txt.gz)

c++ - 使用 char 确定输出不起作用

php - 将 IF 条件放入变量中

java - 使用 ThymeLeaf 和 Spring MVC 动态填充模式时出现问题