使用自定义格式NSPredicate NSString

时间:2010-11-10 05:38:29

标签: objective-c nsstring nspredicate

我想使用NSPredicate来匹配NSString但我开始时遇到了麻烦。我的目标是匹配包含。

格式的某些NSStrings
  1. 是---
  2. 是-TT
  3. -----克
  4. 如果有人有简单的例子,那将非常感激。

2 个答案:

答案 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运算符]来实现,这可以减少谓词格式字符串的长度)