Java,如果List包含String则返回

时间:2013-04-25 15:29:49

标签: java arrays string list

在Java中,我想检查一个字符串是否存在于List<String> myList

这样的事情:

if(myList.contains("A")){
    //true
}else{
    // false
}

问题是myList可以包含未修剪的数据:

{'  A', 'B  ', '  C  '}

如果我的项目'B'在列表中,我希望它返回true。我该怎么做?我想避免循环结构。

7 个答案:

答案 0 :(得分:55)

使用Java 8 Stream API:

List<String> myList = Arrays.asList("  A", "B  ", "  C  ");
return myList.stream().anyMatch(str -> str.trim().equals("B"));

答案 1 :(得分:45)

您需要迭代列表并致电String#trim进行搜索:

String search = "A";
for(String str: myList) {
    if(str.trim().contains(search))
       return true;
}
return false;

如果您要执行忽略案例搜索,请使用:

search = search.toLowerCase(); // outside loop

// inside the loop
if(str.trim().toLowerCase().contains(search))

答案 2 :(得分:14)

您可以使用正则表达式在一行中执行此操作:

if (myList.toString().matches(".*\\bA\\b.*"))

此代码应该可以很好地运行。


顺便说一下,您可以从变量构建正则表达式,如下所示:

.matches("\\[.*\\b" + word + "\\b.*]")

我在每一端添加了[],以防止在搜索字词在开头/结尾包含开/关方括号时出现误报匹配。

答案 3 :(得分:6)

String search = "A";
for(String s : myList)
    if(s.contains(search)) return true;
return false;

这将迭代列表中的每个字符串,并检查它是否包含您要查找的字符串。如果它只是你想要陷阱的空间,你可以这样做:

String search = "A";
for(String s : myList)
    if(s.replaceAll(" ","").contains(search)) return true;
return false;

在搜索之前首先用空字符串替换空格。此外,如果您只想先修剪字符串,可以执行以下操作:

String search = "A";
for(String s : myList)
    if(s.trim().contains(search)) return true;
return false;

答案 4 :(得分:3)

试试这个:

for(String str: myList) {
    if(str.trim().equals("A"))
       return true;
}
return false;

您需要使用str.equalsstr.equalsIgnoreCase代替contains,因为contains中的stringcontains中的List不同1}}

List<String> s = Arrays.asList("BAB", "SAB", "DAS");
s.contains("A"); // false
"BAB".contains("A"); // true

答案 5 :(得分:2)

您可以使用近似字符串匹配库来执行此操作,例如: SecondString,但这几乎肯定是矫枉过正 - 只需使用提供的一个for-loop答案。

答案 6 :(得分:2)

您可以使用自己的代码。如果您不想使用上述循环结构,则无需使用循环结构。只有您必须集中精力删除空间或修剪列表的字符串。

如果您使用的是Java8,则只需使用代码的单行来修剪String:

myList = myList.stream().map(String :: trim).collect(Collectors.toList());

以上一行的重要性是,将来您也可以使用列表或设置。 现在,您可以使用自己的代码:

if(myList.contains("A")){
    //true
}else{
    // false
}