我有一个字符串数组如下:
["Milk","Milkshake","Milk Shake","MilkCream","Milk-Cream"]
如果我搜索“牛奶”,那么结果应该是 ["Milk","Milk Shake","Milk-Cream"]
即按单词搜索。
用谓词as
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
模式)。
关于ios - NSPredicate 按单词匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54984096/