我发现只有关于匹配的给定字符串是列表项的子字符串的情况的问题,但我需要的是相反的情况:
我有一个字符串列表,可能是给定String的确切字符串或子字符串。
使用:
boolean bValid = listOfStrings.contains(sText);
如果在列表中找不到sText,则给我假。
例如:
假设我有以下字符串列表:
List<String> listOfStrings = Arrays.asList("ABC","DEF","GHI");
我需要找出其中一个项是否等于或是否为子串,例如字符串: ABC1 &#34;。
我会得到false
。但我想在这种情况下获得true
。
答案 0 :(得分:5)
使用Stream API,您可以通过以下方式执行此操作:
String s = "ABC1";
bValid = listOfStrings.stream()
.anyMatch(s::contains);
基本上,撤销检查 - 检查s
是否包含String
中的List
个{/ 1}}。
答案 1 :(得分:3)
您需要遍历列表并检查字符串中是否包含任何列表项。
for(String s: listOfStrings) {
if(sText.contains(s)) {
bvalid = true;
}
}
答案 2 :(得分:1)
@ Tobias解决方案的性能提升。
如果找到了匹配项,请确保将中断循环。
for(String s: listOfStrings) {
if(sText.contains(s)) {
bvalid = true;
break;
}
}
答案 3 :(得分:0)
List<String> listOfStrings = Arrays.asList("ABC", "DEF", "GHI");
boolean bValid = false;
String sText = "ABC1";
for(String str: listOfStrings) {
if(sText.contains(str)) {
bValid = true;
}
}
System.out.println(bValid);
希望上面的代码对你有所帮助。如果没有,请回复并清楚地简要介绍您的问题。
感谢。