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