我正在尋找一個名爲lastTestText
的字符串搜索2或3個關鍵短語,我想返回一個Boolean
。它可以很好地搭配:在字符串中查找短語。有沒有更好的方法來做到這一點?
Boolean tooLong = lastTestText.contains("hour") | lastTestText.contains("min");
但是這會變得有點囉嗦,如果我有4個或5個短語,因此我不知道是否有這樣做的更優雅的方式?
我正在尋找一個名爲lastTestText
的字符串搜索2或3個關鍵短語,我想返回一個Boolean
。它可以很好地搭配:在字符串中查找短語。有沒有更好的方法來做到這一點?
Boolean tooLong = lastTestText.contains("hour") | lastTestText.contains("min");
但是這會變得有點囉嗦,如果我有4個或5個短語,因此我不知道是否有這樣做的更優雅的方式?
你可以使用正則表達式:
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.*"
優秀。謝謝。 – user114671
如何數組:
String[] substrs = {...};
bool found = false;
for(String s : substrs) {
if(lastTestText.contains(s)) {
found = true;
break;
}
}
你可以嘗試用代幣這樣做,或者把值常量或甚至嘗試兩種。
您可以預先構造一個正則表達式(它更緊湊一些),然後重新使用它來查找文本匹配。 – jklemmack
正則表達式。或者只是創建一個輔助方法。 – jli
1)使用短路OR運算符(||)更加通俗易懂。 2)爲什麼要返回盒裝布爾值而不是原始布爾值? – I82Much