如果搜索字符串包含左“(”和右“)”括号,NSPredicate 不起作用

Posted

技术标签:

【中文标题】如果搜索字符串包含左“(”和右“)”括号,NSPredicate 不起作用【英文标题】:NSPredicate not working if search string contains left "(" and right ")" brackets 【发布时间】:2015-12-09 06:42:08 【问题描述】:

我正在使用 NSPredicate 从 coredata 中搜索包含。 但有些记录包含左右括号。 示例

productName = "产品 (Product1)" 我尝试按 prodcuctName 过滤数据,然后得到 0 个结果。

   self.productName = @"Product (Product1)";
   [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"productName MATCHES[cd] \"%@\"",self.productName]];

请建议我解决这个问题。

提前致谢!

【问题讨论】:

为什么要在格式字符串中为%@ 加上引号? 没有引号也不起作用。 没想到会这样。但是,如果它与带有这些引号的 any 搜索字符串一起使用,我会感到惊讶。 无论如何,你必须将搜索字符串中的括号转义。 现在解决了我的问题。 MATCHES 替换为 LIKE 关键字。因为现在不需要搜索结果 MATCHES。 【参考方案1】:

我用 LIKE 替换了 MATCHES 关键字。

现在 NSPredicate 工作正常。 MATCHES 是根据 ICU v3 使用正则表达式比较左/右表达式(有关更多详细信息,请参阅Regular Expressions 的 ICU 用户指南)。

而 LIKE 只是与“==”进行比较。

【讨论】:

以上是关于如果搜索字符串包含左“(”和右“)”括号,NSPredicate 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

2021-07-03:给定一个只由左括号和右括号的字符串,返回最长的有效括号子串的长度。

1153.括号匹配

括号生成

数据结构_栈的应用

leetcode22. Generate Parentheses

字符串面试题 08.09. 括号