我有一个字符串数组如下:
["Milk","Milkshake","Milk Shake","MilkCream","Milk-Cream"]
如果我搜索“牛奶”,那么结果应该是["Milk","Milk Shake","Milk-Cream"]
,即用文字搜索。
用谓词作为
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tagName CONTAINS[c] %@",containSearchTerm];
我从上面的数组获得了所有结果。如何使用单词进行匹配?
你需要一个“正则表达式搜索”来匹配单词边界,这是通过谓词中的“MATCHES”来完成的。这是一个例子(基本上从NSPredicate with core data, search word with boundaries in string attribute翻译成Swift):
let searchTerm = "milk"
let pattern = ".*\\b\(NSRegularExpression.escapedPattern(for: searchTerm))\\b.*"
let predicate = NSPredicate(format: "tagName MATCHES[c] %@", pattern)
这将搜索tagName
包含给定搜索词的所有条目,由“单词边界”(\b
模式)包围。