NSPredicate 匹配反斜杠

Posted

技术标签:

【中文标题】NSPredicate 匹配反斜杠【英文标题】:NSPredicate to Match the backslash 【发布时间】:2014-01-23 13:16:17 【问题描述】:

我想通过与核心数据中的字符串 \\xxxx\\yyyy\\zzzz 匹配的名称来获取实体,因此我使用了 NSPredicate,例如 NSPredicate *myPredicate = [NSPredicate predicateWithFormat:" name LIKE %@", \\xxxx\\yyyy\\zzzz];,但有时返回 null。我怀疑反斜杠的问题,所以请帮忙我任何一个。有什么方法可以从核心数据中获取这个实体吗?

【问题讨论】:

那是什么 \\xxxx\\yyyy\\zzzz @karan:你有机会检查答案吗?那是你要找的吗?如果您需要更多信息,请告诉我。 【参考方案1】:

谓词中的“LIKE”进行简单的通配符匹配(与?*)。 因此,反斜杠字符具有特殊含义,必须转义 两次(一次用于字符串文字,一次用于“LIKE”运算符):

[NSPredicate predicateWithFormat:"name LIKE %@", @"\\\\xxxx\\\\yyyy\\\\zzzz"]

但如果您不需要通配符匹配,请改用“==”(或“BEGINSWITH”、“CONTAINS”):

[NSPredicate predicateWithFormat:"name == %@", @"\\xxxx\\yyyy\\zzzz"]

【讨论】:

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

如何转义 NSPredicate 格式字符串中的尾部反斜杠

正则表达式 反斜杠的匹配 2018-11-30

python 中的反斜杠匹配的问题

正则表达式匹配一美元,前面没有反斜杠

Sed 不匹配反斜杠文字还是我做错了啥?

使用awk,后跟单引号时如何匹配反斜杠字符(是的,这是两个字符)