测试一个字符串是否包含数组中的任意一个字符串

199

如何测试一个字符串是否包含数组中任何字符串?

不要使用

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

5
你是在询问一个字符串是与数组中的任何字符串相等,还是包含数组中的任何字符串? - Natix
1
你想检查数组中的任何字符串是否是输入字符串的子字符串吗?还是你想检查输入字符串是否等于数组中的某个字符串?你能更明确一些吗? - Savino Sguera
1
包含,使其获取一行并查看其中是否包含字符串数组列表中的任何单词。 - arowell
16个回答

0

如果你正在寻找不区分大小写的匹配,可以使用模式

Pattern pattern = Pattern.compile("\\bitem1 |item2\\b",java.util.regex.Pattern.CASE_INSENSITIVE);

Matcher matcher = pattern.matcher(input);
if (matcher.find()) { 
    ...
}

0
在Kotlin中
if ( arrayOf("one", "two", "three").find{ "onetw".contains(it) } != null ) {
    doStuff()
}

不确定在9年前添加一个格式不良的答案,且语言与所要求的语言不同是否合适。 - Thomas Hirsch
@ThomasHirsch 为什么不呢?这很简单,而且今天肯定更有用。 - 6rchid

0
如果你正在搜索整个单词,你可以这么做,它不区分大小写
private boolean containsKeyword(String line, String[] keywords)
{
    String[] inputWords = line.split(" ");

    for (String inputWord : inputWords)
    {
        for (String keyword : keywords)
        {
            if (inputWord.equalsIgnoreCase(keyword))
            {
                return true;
            }
        }
    }

    return false;
}

0
在Apache common lang 3中,支持检查是否包含任何字符串。试一下:
import org.apache.commons.lang3.StringUtils;

...

if(StringUtils.containsAny(string, item1, item2, item3)){
   // your code
}

-3

以下代码应该适用于您正在搜索的数组Strings

Arrays.binarySearch(Strings,"mykeytosearch",mysearchComparator);

其中mykeytosearch是您想要在数组中测试存在性的字符串。 mysearchComparator - 是一个比较器,用于比较字符串。

有关更多信息,请参阅Arrays.binarySearch


2
需要注意的是,binarySearch 只能在已排序的数组上运行,无论是自然排序还是通过给定比较器进行排序(如果有的话)。 - Natix

-6
if (Arrays.asList(array).contains(string))

10
问题相反:目标字符串是否包含列表中的任何一个字符串。 - Basil Bourque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接