【问题标题】:NSPredicate Regex errorNSPredicate 正则表达式错误
【发布时间】: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,如下面的答案所示。
  • 我已经知道了,谢谢提醒。

标签: ios objective-c iphone regex nspredicate


【解决方案1】:

LIKE:用于通配符表达式。

CONTAIN:根据您的问题,您应该使用 contains[cd],因为它将文件与搜索文本匹配。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fileName CONTAINS[cd] %@",searchDisplayController.searchBar.text];

    self.fileArrayAfterPre =  [[NSMutableArray alloc] initWithArray:[fileArr filteredArrayUsingPredicate:predicate]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    相关资源
    最近更新 更多