2016-05-03 8 views
1

Ich habe einen Bereich, in dem eine Wenn die Zeichenfolge gesendet wird, möchte ich überprüfen, ob diese Zeichenfolge enthält alles aus einer ArrayList. Zum Beispiel könnte ich in der ArrayList die Zeichenfolgen "visit" und "enter" haben. Der Benutzer könnte etwas wie "enter village" oder "visit cave" eingeben. Ich möchte nur in der Lage sein, die Zeichenfolge mit der ArrayList zu vergleichen, um nach beliebigen Schlüsselwörtern zu suchen. Wenn es ein Stichwort aus der Liste hat, kann es entsprechend handeln. Der Code habe ich jetzt wie folgt aussieht:Vergleichen einer Zeichenfolge mit einer Array-Liste, um zu sehen, ob die Zeichenfolge enthält alles aus der Liste

if(enterList.contains(text)) //code goes here;

mit text ist die Zeichenfolge der Benutzer eingibt. Aber so funktioniert das Gegenteil von dem, was ich will. Sein Sehen wenn enterListtext enthält, nicht wenn text irgendetwas von enterList enthält. Gibt es eine Möglichkeit zu sehen, ob irgendetwas in einer Zeichenfolge irgendetwas in einer Liste enthält?

+0

Was meinst du mit Text enthält alles von enterList? –

+3

Probieren Sie eine 'for' -Schleife aus:' for (String word: enterList) if (text.contains (word)) gibt true zurück; return false; ' – Andreas

+0

@ShreyosAdikari was ich meine ist, ich will sehen, ob irgendetwas in der ArrayListe in der Zeichenfolge namens text ist. Selbst wenn die Zeichenfolge "visit village" lautet und die arrayList nur eine Zeichenfolge enthält, die "visit" entspricht, wird erkannt, dass der Text etwas aus der Liste enthält. –

Antwort

2

bitte mit diesem versuchen Zuerst teilen Sie Ihre Zeichenfolge durch den Raum in ein Array und das Array vergleichen mit Ihnen Liste wie

String[] splited = text.split("\\s+"); 
if(Collections.disjoint(yourArray, Arrays.asList(splited))){ 
//your logic 
} 
0

Der folgende Code bekommt man auch die Token, die vorhanden sind und nicht nur, wenn eine von ihnen sind Gegenwart oder nicht.

List<String> listWords; // List of Words against which checking will happen 
String sentence; // Concerned String to check 

... 

Stream.of(sentence.split("[ |.]")) 
     .filter(token -> listWords.contains(token)) 
     .forEach(System.out::println); 

Das obige gibt nur das gefundene Token aus. Sie können den Code wie folgt ändern, um weitere Logik hinzuzufügen.

Stream.of(sentence.split("[ |.]")) 
     .filter(token -> listWords.contains(token)) 
     .forEach(f -> { 
      // Your logic here 
     }); 
Verwandte Themen