2011-12-12 74 views
0

我正在尋找一個名爲lastTestText的字符串搜索2或3個關鍵短語,我想返回一個Boolean。它可以很好地搭配:在字符串中查找短語。有沒有更好的方法來做到這一點?

Boolean tooLong = lastTestText.contains("hour") | lastTestText.contains("min"); 

但是這會變得有點囉嗦,如果我有4個或5個短語,因此我不知道是否有這樣做的更優雅的方式?

+1

您可以預先構造一個正則表達式(它更緊湊一些),然後重新使用它來查找文本匹配。 – jklemmack

+0

正則表達式。或者只是創建一個輔助方法。 – jli

+0

1)使用短路OR運算符(||)更加通俗易懂。 2)爲什麼要返回盒裝布爾值而不是原始布爾值? – I82Much

回答

2

你可以使用正則表達式:

lastTestText.matches(".*(?>hour|min|second).*"); 

你甚至可以檢查複數,使用這樣的表達式:".*(?>hour(?>s)?|min(?>s)?|second(?>s)?).*"這將匹配hour, hours, min, mins, second, seconds

但是,請注意,它也會匹配milliseconds,因爲它包含seconds。在這種情況下,因爲你需要使用單詞邊界的表達式將變得更加複雜: ".*\\b(?>hour(?>s)?|min(?>s)?|second(?>s)?)\\b.*"

+0

優秀。謝謝。 – user114671

1

如何數組:

String[] substrs = {...}; 
bool found = false; 
for(String s : substrs) { 
    if(lastTestText.contains(s)) { 
     found = true; 
     break; 
    } 
} 
0

你可以嘗試用代幣這樣做,或者把值常量或甚至嘗試兩種。

相關問題