2016-05-03 89 views
1

我有一個區域,其中提交字符串時,我想檢查該字符串是否包含arrayList中的任何內容。例如,在arrayList中,我可能有字符串"visit""enter"。用戶可以輸入諸如"enter village""visit cave"之類的東西。我只是想能夠比較字符串與arrayList來檢測任何關鍵字。如果它有來自列表的關鍵字,它可以採取相應的行動。我現在所擁有的代碼看起來是這樣的:比較字符串和數組列表,看看字符串是否包含列表中的任何內容

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

text是用戶輸入的字符串。但這種方式的運作方式與我想要的相反。它看到如果enterList包含text,而不是如果text包含任何從enterList。有什麼方法可以查看字符串中的任何內容是否包含列表中的任何內容?

+0

你是什麼意思的文本包含enterList的東西? –

+3

如果(text.contains(word))返回true,則嘗試'for'循環:for(String word:enterList);返回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 
     }); 
相關問題