我想使用NSPredicate来匹配NSString但我开始时遇到了麻烦。我的目标是匹配包含。
格式的某些NSStrings如果有人有简单的例子,那将非常感激。
答案 0 :(得分:3)
您可以使用自己的比较代码创建一个带有+predicateWithBlock:
的NSPredicate。
或使用regex(也许是最佳解决方案):
[NSPredicate predicateWithFormat:@"SELF MATCHES '(be...)|(be.tt)|(.....g)'"]
答案 1 :(得分:2)
执行此操作的一种简单方法是使用LIKE
运算符。使用此字符串运算符,您可以使用特殊字符*
和?
。 *
表示“0个或更多字符”,?
表示“正好一个字符”。所以你可以这样做:
NSPredicate * p = [NSPredicate predicateWithFormat:@"SELF LIKE %@ OR SELF LIKE %@ OR SELF LIKE %@", @"be???", @"be?tt", @"?????g"];
NSLog(@"%d", [p evaluateWithObject:@"beast"]); //logs "1"
(@benoît在他的回答中很好地观察到这也可以通过正则表达式[MATCHES
运算符]来实现,这可以减少谓词格式字符串的长度)