如何检查句子是否包含特定单词?
问题描述:
我不在寻找如何找到另一个字符串内的字符串。我正在寻找一个词。因此,解决办法应通过这些测试:如何检查句子是否包含特定单词?
let result: Bool = senx.contains(word: "are")
let sen1 = "We are good." //true
let sen2 = "We care about you." //false
let sen3 = "are" //true
let sen4 = "are." //true
let sen5 = "Are." //true
let sen6 = "I have a flare." //false
答
你需要一个正则表达式周围要检查存在该值的字边界\b
:
let pattern = "(?i)\\bare\\b"
if string.rangeOfString(pattern, options: .RegularExpressionSearch) != nil ...
的\bare\b
匹配任何are
是一个整体字(不是前面也不跟随字母/数字/下划线(?i)
标志确保不区分大小写的搜索请参阅the regex demo
请参阅this SO answer代码来检查模式是否与字符串匹配。
请参阅regular-expressions.info Word boundaries了解有关\b
字边界的更多信息。
+0
仅供参考:如果您只想匹配'Are'或'are'作为整个单词,但您不想检测'ARe'或'ARE'或'aRe'等,请使用* alternation *:'let pattern =“\\ b(?:are | Are)\\ b”' –
你到目前为止尝试过什么吗? – code11
实际上,您正在字符串中查找字符串,但添加了a)不区分大小写和b)没有任何字母的条件。 –