我正在尝试使用此谓词过滤字符串数组:
[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/