如何检查String
是否包含来自Strings
的所有Array
。
我目前的代码:
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");
}
}
答案 0 :(得分:5)
如果将代码封装到单独的方法中,代码看起来会更好:
public static boolean containsAllWords(String word, String ...keywords) {
for (String k : keywords)
if (!word.contains(k)) return false;
return true;
}
答案 1 :(得分:3)
使用boolean
变量来告诉您每个关键字是否匹配。将其设置为true
作为默认值。然后检查每个关键字:如果您的单词中没有任何关键字,请停止搜索并将变量设置为false
。
boolean containsAll = true;
for (String keyword : keywords){
if (!word.contains(keyword)){
containsAll = false;
break;
}
}
答案 2 :(得分:2)
如果您使用的是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");
}
答案 3 :(得分:0)
注意此解决方案仅在您的关键字包含 一个字符 时才有效,如果您的关键字包含多个字符,则已提及许多答案
有一行:
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"};
使用array1
array2
是否包含第二个containsAll
的所有元素
boolean contain = Arrays.asList(split).containsAll(Arrays.asList(keywords));
答案 4 :(得分:0)
使用StringUtils(org.apache.commons.lang.StringUtils
)。它将返回第一次出现的关键字的索引,如果不存在,则返回-1。
StringUtils.indexOfAny(word, keywords);
或者您可以使用Arrays
来返回布尔值。
Arrays.asList(word).contains(keywords)
答案 5 :(得分:-2)
只需使用计数器:
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");
}
如果计数器等于关键字长度,则表示包含所有元素。使用此解决方案,您还可以找出该单词匹配的关键字数量。
答案 6 :(得分:-2)
更好的代码是:
for(String s: keywords){
if(word.contains(s)){
System.out.println("Yes");
}else{
System.out.println("No");
}
}