Java,如果列表中的修剪字符串包含字符串,则返回
在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
列表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开始就可用。