2016-05-03 17 views
1

私は文字列が送信されるときに、その文字列にarrayListから何かが含まれているかどうかをチェックします。例えば、arrayListには、文字列"visit""enter"があるかもしれません。ユーザーは"enter village"または"visit cave"のように入力できます。私は、文字列とarrayListを比較してキーワードを検出できるようにしたいだけです。リストにキーワードがある場合は、それに応じて行動することができます。私が今持っているコードは次のようになります。文字列を配列リストと比較して、文字列にリストから何かが含まれているかどうかを確認します。

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

ユーザーが入力した文字列であることtextで。しかし、この作品の仕方は、私が望むものの反対です。 enterListにはtextが含まれています。textにはenterListが含まれていません。文字列の中に何かがリストに含まれているかどうかを確認する方法はありますか?

+0

テキストには何が入っているのですか? –

+3

'for'ループを試してください:' for(String word:enterList)if(text.contains(word))trueを返します。 return false; ' – Andreas

+0

@ShreyosAdikari私が意味するのは、arrayList内の何かがtextという文字列内にあるかどうかを確認したいということです。したがって、たとえ文字列が "visit village"であっても、arrayListには "visit"と等しい文字列しか含まれていないとしても、そのテキストにはリストから何かが含まれていることが検出されます。 –

答えて

2

これを試す最初の配列にスペースで、あなたの文字列を分割し、次のコードは、また、あなたの存在であり、それらのいずれかがあるないだけであれば、トークンを取得します

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

ようなリストと配列を比較してみてください現在かどうか。

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

上記の説明は、検出されたトークンだけを表示しています。ロジックを追加するために、コードを次のように変更することができます。

Stream.of(sentence.split("[ |.]")) 
     .filter(token -> listWords.contains(token)) 
     .forEach(f -> { 
      // Your logic here 
     }); 
関連する問題