Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,如果列表中的修剪字符串包含字符串,则返回_Java_Arrays_String_List - Fatal编程技术网

Java,如果列表中的修剪字符串包含字符串,则返回

Java,如果列表中的修剪字符串包含字符串,则返回,java,arrays,string,list,Java,Arrays,String,List,在Java中,我想检查列表myList中是否存在字符串 大概是这样的: if(myList.contains("A")){ //true }else{ // false } .matches("\\[.*\\b" + word + "\\b.*]") 问题是myList可能包含未修剪的数据: {' A', 'B ', ' C '} 如果我的项目'B'在列表中,我希望它返回true。我该怎么做?我希望避免循环结构 String search = "A"; for(St

在Java中,我想检查
列表myList
中是否存在字符串

大概是这样的:

if(myList.contains("A")){
    //true
}else{
    // false
}
.matches("\\[.*\\b" + word + "\\b.*]")
问题是myList可能包含未修剪的数据:

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

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;

您需要迭代列表并调用搜索:

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

您可以使用一个近似的字符串匹配库来完成此操作,例如,但这几乎肯定是过激的-只需使用提供的一个for循环答案即可。

您可以使用regex在一行中完成此操作:

if (myList.toString().matches(".*\\bA\\b.*"))
这段代码应该执行得很好


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

if(myList.contains("A")){
    //true
}else{
    // false
}
.matches("\\[.*\\b" + word + "\\b.*]")
我在每一端添加了
[
]
,以防止在搜索词的开始/结束处包含一个开/闭方括号时出现误报匹配。

尝试以下操作:

for(String str: myList) {
    if(str.trim().equals("A"))
       return true;
}
return false;
您需要使用
str.equals
str.equalsIgnoreCase
而不是
contains
,因为
contains
字符串中的作用与
contains
列表中的作用不同

List<String> s = Arrays.asList("BAB", "SAB", "DAS");
s.contains("A"); // false
"BAB".contains("A"); // true
List s=Arrays.asList(“BAB”、“SAB”、“DAS”);
s、 包含(“A”);//假的
“BAB”。包含(“A”);//真的

使用Java 8流API:

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

您可以使用自己的代码。如果不想像上面所说的那样使用循环结构,则不需要使用循环结构。只需聚焦即可删除空间或修剪列表的字符串

如果您使用的是java8,则只需使用一行代码来修剪字符串:

myList = myList.stream().map(String :: trim).collect(Collectors.toList());
上面这一行的重要性在于,将来,您也可以使用列表或集合。 现在,您可以使用自己的代码:

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

在vanilla JDK中,没有。我想在Java8中使用闭包可以在一行中实现这一点。我如何实现它。没有写循环条件。实际上,它在内部检查每个字符串。但是我想要一行;)正如我所说的,用简单的Java无法在一行代码中实现这一点。有一些库可以帮助您完成这项工作。[检查ArrayList是否包含字符串的一部分][1][1]:@Bohemian:Regex在列表中使用
toString()
并使用word boundary进行检查的方法非常容易出错。如果列表元素包含非单词字符怎么办。如何使用正则表达式计算出这种列表?这里的str是什么,它是变量吗?@vikramvi是的,这种形式称为lambda函数,从Java8开始就可用。