NSPredicate匹配字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSPredicate匹配字符串相关的知识,希望对你有一定的参考价值。

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

["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包含给定搜索词的所有条目,由“单词边界”(模式)包围。

以上是关于NSPredicate匹配字符串的主要内容,如果未能解决你的问题,请参考以下文章

Cloudkit 的 NSPredicate 匹配字符串

NSPredicate 匹配反斜杠

NSPredicate匹配字符串

NSPredicate 匹配“NSDatabase 中的任何条目与包含字符串的值”

NSPredicate 和 BEGINSWITH with CloudKit:字段值类型不匹配

NSPredicate ANY 只返回与字符串列表中第一个元素的关键字匹配的记录