如何在字符串中搜索groovy中的单词列表

时间:2013-03-07 21:06:09

标签: groovy

在字符串中搜索单词列表有什么好方法? (不区分大小写)

示例:

def s = "This is a test"

def l = ["this", "test"]

结果可以是真的也可以是假的,但是找到找到的单词数量并且那些单词是真的很好。

1 个答案:

答案 0 :(得分:2)

  

结果可以是真的也可以是假的,但是找到找到的单词数量并且那些单词是真的很好。

然后你可能想要findAll该列表中包含的字符串中的单词:D

def wordsInString(words, str) {
    def strWords = str.toLowerCase().split(/\s+/)
    words.findAll { it.toLowerCase() in strWords }
}

def s = "This is a test"
assert wordsInString(["this", "test"], s) == ["this", "test"]
assert wordsInString(["that", "test"], s) == ["test"]
assert wordsInString(["that", "nope"], s) == []

// Notice that the method conserves the casing of the words.
assert wordsInString(["THIS", "TesT"], s) == ["THIS", "TesT"]

// And does not match sub-words.
assert wordsInString(["his", "thi"], s) == []

并且,由于列表与a truth value相关联,您可以直接在布尔上下文中使用结果,例如if (wordsInString(someWords, someString)) { ... }