【问题标题】:NSPredicate to test if NSString contains a character from another NSStringNSPredicate 测试 NSString 是否包含来自另一个 NSString 的字符
【发布时间】:2014-07-06 21:21:27
【问题描述】:

我正在尝试查看 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];

我尝试用包含替换匹配项,但这没有帮助。

也试过了:

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

如何更改谓词以使其正常工作?

【问题讨论】:

  • 这将检查字符串是否包含像ABC 这样的子字符串,而不是获取“ABC”中的任何字符

标签: objective-c nsstring nspredicate


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2012-09-11
    相关资源
    最近更新 更多