NSPredicate匹配字符串

问题描述 投票:0回答:1

我有一个字符串数组如下:

["Milk","Milkshake","Milk Shake","MilkCream","Milk-Cream"]

如果我搜索“牛奶”,那么结果应该是["Milk","Milk Shake","Milk-Cream"],即用文字搜索。

用谓词作为

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"tagName CONTAINS[c] %@",containSearchTerm];

我从上面的数组获得了所有结果。如何使用单词进行匹配?

ios objective-c swift nsstring nspredicate
1个回答
3
投票

你需要一个“正则表达式搜索”来匹配单词边界,这是通过谓词中的“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模式)包围。

© www.soinside.com 2019 - 2024. All rights reserved.