【发布时间】:2010-11-10 05:38:28
【问题描述】:
我想使用 NSPredicate 来匹配 NSString,但我在开始时遇到了麻烦。我的目标是匹配某些包含以下格式的 NSString。
- 成为---
- 最好的
- -----g
如果有人有简单的例子,将不胜感激。
【问题讨论】:
标签: objective-c nsstring nspredicate
我想使用 NSPredicate 来匹配 NSString,但我在开始时遇到了麻烦。我的目标是匹配某些包含以下格式的 NSString。
如果有人有简单的例子,将不胜感激。
【问题讨论】:
标签: objective-c nsstring nspredicate
您可以使用自己的比较代码创建带有+predicateWithBlock: 的NSPredicate。
或者使用regex(也许是最好的解决方案):
[NSPredicate predicateWithFormat:@"SELF MATCHES '(be...)|(be.tt)|(.....g)'"]
【讨论】:
一个简单的方法是使用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 运算符] 来完成,它可以减少谓词格式字符串的长度)
【讨论】: