在字符串中搜索单词列表有什么好方法? (不区分大小写)
示例:
def s = "This is a test"
def l = ["this", "test"]
结果可以是真的也可以是假的,但是找到找到的单词数量并且那些单词是真的很好。
答案 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)) { ... }
。