NSPredicate 正则表达式错误
Posted
技术标签:
【中文标题】NSPredicate 正则表达式错误【英文标题】:NSPredicate Regex error 【发布时间】:2016-08-26 07:12:10 【问题描述】:我正在处理一个文档管理页面。我使用了NSPredicate
正则表达式,同时从用户输入中获得了searchBar.text
。输入是中文形式的括号但英文形式很好时发生错误(如下图)。如果有人遇到过这个问题?谢谢。
这是我的代码,崩溃发生在最后一行。
NSString * searchStr = [NSString stringWithFormat:@"fileName like[cd] \'*%@*\'",searchDisplayController.searchBar.text];
NSPredicate *predicate = [NSPredicate predicateWithFormat:searchStr];
self.fileArrayAfterPre = [[NSMutableArray alloc] initWithArray:[fileArr filteredArrayUsingPredicate:predicate]];
【问题讨论】:
出现此错误的原因是您用作正则表达式模式的输入包含未配对数量的未转义(
和)
。要么转义用作正则表达式模式的字符串,要么只使用 CONTAINS,如下面的答案所示。
我已经知道了,谢谢提醒。
【参考方案1】:
LIKE:用于通配符表达式。
CONTAIN:根据您的问题,您应该使用 contains[cd],因为它将文件与搜索文本匹配。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fileName CONTAINS[cd] %@",searchDisplayController.searchBar.text];
self.fileArrayAfterPre = [[NSMutableArray alloc] initWithArray:[fileArr filteredArrayUsingPredicate:predicate]];
【讨论】:
以上是关于NSPredicate 正则表达式错误的主要内容,如果未能解决你的问题,请参考以下文章