2017-04-14 11 views
2

enthält. Überprüfen Sie, ob String alle Strings von Array enthält.Überprüfen Sie, ob die Zeichenfolge alle Zeichenfolgen aus dem Array

Mein aktueller Code:

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"); 
    } 
} 
+5

@Tomask so lange wie es eine gültige Frage ist, spielt Hausaufgaben keine Rolle. –

+0

Was stimmt also nicht mit Ihrem aktuellen Code? –

Antwort

5

Der Code aussehen würde, sieht viel besser aus, wenn Sie es in separaten wickeln Methode:

public static boolean containsAllWords(String word, String ...keywords) { 
    for (String k : keywords) 
     if (!word.contains(k)) return false; 
    return true; 
} 
3

Verwenden Sie eine boolean Variable, die Ihnen sagen, wenn jedes Schlüsselwort abgestimmt ist. Legen Sie als Standardwert true fest. Dann überprüfe jedes Wort: Wenn ein Wort nicht in deinem Wort enthalten ist, höre auf zu suchen und setze deine Variable auf false.

boolean containsAll = true; 
for (String keyword : keywords){ 
    if (!word.contains(keyword)){ 
     containsAll = false; 
     break; 
    } 
} 
-2

Verwenden Sie einfach einen Zähler:

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"); 
} 

Wenn der Zähler die Schlüsselwörter Länge gleich, bedeutet dies, dass alle Elemente enthalten sind. Mit dieser Lösung können Sie auch herausfinden, wie viele Schlüsselwörter mit dem Wort übereinstimmen.

+0

Ich verstehe nicht, was du meinst, sorry – Aurasphere

-2

Ein besserer Code wäre:

for(String s: keywords){ 
    if(word.contains(s)){ 
     System.out.println("Yes"); 
    }else{ 
     System.out.println("No"); 
    } 
} 
+0

Sie vergessen die Pause-Anweisung. – gifpif

+0

vor dem Kommentieren stellen Sie bitte sicher, dass Ihr Code korrekt ist und sich auch darum kümmern, Ihr zu erklären. –

2

Wenn Sie Java 8+ verwenden, können Sie einen Stream und Test verwenden können, wenn alle Elemente mit einer Zeile Ihren Kriterien entsprechen. Wie,

if (Stream.of(keywords).allMatch(word::contains)) { 
    System.out.println("Yes"); 
} else { 
    System.out.println("No"); 
} 

In früheren Versionen, oder wenn Sie verstehen wollen, was die oben tut, könnte es so etwas wie

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"); 
} 
0

Hinweis diese Lösung funktioniert nur, wenn Sie Ihre Keywords eine ch enthalten ar, es gibt viele Antworten bereits erwähnt, wenn Ihre Schlüsselwörter mehr als ein Zeichen enthalten.

Mit einer Zeile:

boolean contain = Arrays.asList(word.split("")).containsAll(Arrays.asList(keywords)); 

Die Idee ist:

String word = "abc"; 
String[] split = word.split(""); 

Ihr String Split eine Reihe von Zeichen zu bekommen split = {a, b, c}

String[] keywords = {"a", "b"}; 

Überprüfen Sie, ob Ihr array1 enthalten alle Element des zweiten array2containsAll

boolean contain = Arrays.asList(split).containsAll(Arrays.asList(keywords)); 
+0

funktioniert nicht für 'keywords = {" ab "," bc "}' – CoronA

+0

@CoronA aber das Beispiel des OP enthält einen Buchstaben und nicht zwei wie Sie tun –

+0

@JCF: Algorithmen lösen normalerweise nicht Beispiele aber Probleme. – CoronA

0

Entweder Verwendung StringUtils mit (org.apache.commons.lang.StringUtils). Es wird den Index des ersten Vorkommens von Schlüsselwörtern oder -1 zurückgeben, wenn es nicht dort ist.

StringUtils.indexOfAny(word, keywords); 

Oder Sie können Arrays verwenden, die den Booleschen Wert zurück.

Arrays.asList(word).contains(keywords) 
Verwandte Themen