如何检查句子是否包含特定单词?

问题描述:

我不在寻找如何找到另一个字符串内的字符串。我正在寻找一个词。因此,解决办法应通过这些测试:如何检查句子是否包含特定单词?

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 
+0

你到目前为止尝试过什么吗? – code11

+3

实际上,您正在字符串中查找字符串,但添加了a)不区分大小写和b)没有任何字母的条件。 –

你需要一个正则表达式周围要检查存在该值的字边界\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”' –