检查NSString是否包含来自不同NSString的字符

Vyg*_*ggo 1 cocoa objective-c nsstring nspredicate

我正在寻找一种方法来比较两个字符串,看看第二个字符串是否包含第一个中列出的字符(字母,数字,其他),让我解释一下:

例如:想象一个只有数字的密码,允许使用"*":参考链(1):"*0123456789" NSString格式,无NSArray 工作链(2)="156/15615 = 211" NSString格式,

我怎么知道我的链2包含2个字符(/ =)哪个不在我的链1中?

为了简化允许的管理字母,我不想NSArray用来管理链,例如函数调用:

BOOL unauthorized_letter_found = check(work_chain, reference_chain);
Run Code Online (Sandbox Code Playgroud)

你必须通过"for" NSPredicate,等等?

PS:我在MAC OS上,而不是iOS,所以我无法使用NSRegularExpression.

Geo*_*che 9

您可以使用字符集,例如使用-rangeOfCharacterFromSet:检查是否存在禁用字符:

NSCharacterSet *notAllowed = [[NSCharacterSet 
    characterSetWithCharactersInString:@"*0123456789"] invertedSet];
NSRange range = [inputString rangeOfCharacterFromSet:notAllowed];
BOOL unauthorized = (range.location != NSNotFound);
Run Code Online (Sandbox Code Playgroud)


Dav*_*ong 5

如果你想使用NSPredicate,你可以这样做:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '[0-9*]+'"];
if ([predicate evaluateWithObject:@"0*2481347*"]) {
  NSLog(@"passes!");
} else {
  NSLog(@"fails!");
}
Run Code Online (Sandbox Code Playgroud)

这是使用NSPredicate内置的正则表达式匹配的东西.:)