[英]Check if string contains all strings from array
如何检查String
包含来自Array
所有Strings
。
我目前的代码:
String word = "abc";
String[] keywords = {"a", "d"};
for(int i = 0; i < keywords.length; i++){
if(word.contains(keywords[i])){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
如果您将其包装到一个单独的方法中,代码看起来会更好:
public static boolean containsAllWords(String word, String ...keywords) {
for (String k : keywords)
if (!word.contains(k)) return false;
return true;
}
使用一个boolean
变量来告诉你是否每个关键字都匹配。 将其设置为true
作为默认值。 然后检查每个关键字:如果您的单词中不包含任何关键字,请停止搜索并将变量设置为false
。
boolean containsAll = true;
for (String keyword : keywords){
if (!word.contains(keyword)){
containsAll = false;
break;
}
}
如果您使用的是 Java 8+,则可以使用Stream
并用一行测试所有元素是否符合您的条件。 喜欢,
if (Stream.of(keywords).allMatch(word::contains)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
在早期版本中,或者如果您想了解上面的内容,它可能看起来像
boolean allMatch = true;
for (String kw : keywords) { // <-- for each kw in keywords
if (!word.contains(kw)) { // <-- if "word" doesn't contain kw
allMatch = false; // <-- set allMatch to false
break; // <-- stop checking
}
}
if (allMatch) {
System.out.println("Yes");
} else {
System.out.println("No");
}
请注意,此解决方案仅在您的关键字包含一个字符时才有效,如果您的关键字包含多个字符,则已经提到了许多答案。
一行:
boolean contain = Arrays.asList(word.split("")).containsAll(Arrays.asList(keywords));
这个想法是:
String word = "abc";
String[] split = word.split("");
拆分你的字符串以获得一个字符数组split = {a, b, c}
String[] keywords = {"a", "b"};
使用containsAll
检查您的array1
包含第二个array2
所有元素
boolean contain = Arrays.asList(split).containsAll(Arrays.asList(keywords));
要么使用 StringUtils ( org.apache.commons.lang.StringUtils
)。 它将返回第一次出现关键字的索引,如果不存在则返回 -1。
StringUtils.indexOfAny(word, keywords);
或者您可以使用将返回布尔值的Arrays
。
Arrays.asList(word).contains(keywords)
只需使用计数器:
String word = "abc";
String[] keywords = {"a", "d"};
int counter = 0;
for(int i = 0; i < keywords.length; i++){
if(word.contains(keywords[i])){
counter++;
}
}
if(counter == keywords.length){
System.out.println("Yes");
}else{
System.out.println("No");
}
如果计数器等于关键字长度,则表示包含所有元素。 使用此解决方案,您还可以找出与该词匹配的关键字数量。
更好的代码是:
for(String s: keywords){
if(word.contains(s)){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.