NSPredicate测试NSString是否包含来自另一个NSString的字符

时间:2014-07-06 21:21:27

标签: objective-c nsstring nspredicate

我试图查看NSString是否包含预定义字符串中的任何字符(A,B或C中的任何一个)。

我知道我可以这样做:

NSCharacterSet *abc = [NSCharacterSet characterSetWithCharactersInString: @"ABC"];
NSRange range = [sequence rangeOfCharacterFromSet: abc];
BOOL result = (range.location != NSNotFound);

如果传入的字符串包含至少一个A,B或C,则结果为YES。

我试图看看我是否可以使用NSPredicate作为替代方案,所以我一直在玩它(例如另见:Checking to see if an NSString contains characters from a different NSString),但我总是得到NO的结果:

NSPredicate *abcPredicate = [NSPredicate predicateWithFormat: @"SELF matches 'ABC'"];
result = [stedPredicate evaluateWithObject: myString];

我尝试用contains替换匹配,但这没有用。

也尝试过:

NSPredicate *stedPredicate = [NSPredicate predicateWithFormat: @"SELF LIKE 'ABC'"];

如何更改谓词才能生效?

1 个答案:

答案 0 :(得分:2)

检查字符串是否包含您可以使用的任何字符A,B或C. 正则表达式括号表达式“[ABC]”:

NSPredicate *abcPredicate = [NSPredicate predicateWithFormat: @"SELF MATCHES %@", @".*[ABC].*"];
BOOL result = [abcPredicate evaluateWithObject: myString];