在字符串中查找短语。有更优雅的方式吗?

时间:2011-12-12 17:29:42

标签: java android

我想在名为lastTestText的字符串中搜索2或3个关键短语,我想返回Boolean。它适用于:

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

但如果我有4或5个短语,这会有点啰嗦,所以我想知道是否有更优雅的方式来做这个?

3 个答案:

答案 0 :(得分: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.*"

答案 1 :(得分:1)

数组怎么样:

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

答案 2 :(得分:0)

您可以尝试使用令牌,或将值放在常量中,甚至尝试两者。