ios - NSPredicate 搜索 LIKE

标签 ios objective-c nspredicate

我正在尝试使用此谓词过滤字符串数组:

[NSPredicate predicateWithFormat:@"SELF LIKE[c] '#*!%d'", aNumber]

每个类似于#WILDCARD!ANY_NUMBER 的字符串都是有效的。

但它不起作用:( 你能帮帮我吗?

编辑:

NSString *pattern = [@"#*!" stringByAppendingFormat:@"%d", numberVariable];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
NSArray *filteredArray = [anArray filteredArrayUsingPredicate:pred];

数组 anArray 包含类似 #0!-1 的字符串(numberVariable 为 -1),但数组 filterdArray 为空。所以正则表达式不起作用。

编辑:

我的解决方案:

NSString *pattern = [@"#.*!\\" stringByAppendingFormat:@"%d", numberVariable];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
NSArray *filteredArray = [anArray filteredArrayUsingPredicate:pred];

最佳答案

要查找所有看起来像“#ANY_CHARACTERS!ANY_NUMBER”的任意数字的字符串,您需要带有正则表达式的“MATCHES”运算符:

NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"#.*!\\d+"];
NSArray *filtered = [yourArray filteredArrayUsingPredicate:pred];

如果你有一个特定的数字 aNumber 并且想找到形式的所有字符串 "#ANY_CHARACTERS!",那么下面的代码应该有效:

NSString *pattern = [@"#*!" stringByAppendingFormat:@"%d", aNumber];
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF LIKE %@", pattern];
NSArray *filtered = [yourArray filteredArrayUsingPredicate:pred];

你的问题

[NSPredicate predicateWithFormat:@"SELF LIKE[c] '#*!%d'", aNumber]

%d引号内没有被aNumber代替。

关于ios - NSPredicate 搜索 LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875551/

相关文章:

iphone - 消息与电子邮件

ios - 如何在 Swift 中包含服务器端时间戳

iphone - 在 iPhone 上横向全屏播放 YouTube,纵向内嵌播放 YouTube

ios - 收到通知后我想更改我的 uiwebview

iphone - 如何取消performSelectorOnMainThread?

ios - 检查以确保核心数据中的实体属性在保存时不相同

ios - UIViewControllers 和 ARC

ios - 应用商店审核流程及应用版本更新

ios - 构建 nspredicate 时的 EXC_BAD_ACCESS

objective-c - NSPredicate:按 NSDate 属性的日期过滤对象