我正在寻找一种比较两个字符串的方法,看看第二个字符串是否包含第一个中列出的字符(字母,数字,其他),让我解释一下:
例如:想象一下只有数字的密码,允许使用“*”:
参考链(1):“* 0123456789”NSString
格式,无NSArray
工作链(2)=“156/15615 = 211”NSString
格式,
我怎么知道我的链2包含2个字符(/ =)哪个不在我的链1中?
为了简化允许的管理信函,我不想使用NSArray
来管理链,例如函数调用:
BOOL unauthorized_letter_found = check(work_chain, reference_chain);
你必须通过“for”,NSPredicate
等吗?
PS:我在MAC OS上,而不是iOS,所以我不能使用NSRegularExpression
。
答案 0 :(得分:9)
你可以使用字符集,例如使用-rangeOfCharacterFromSet:
检查是否存在禁用字符:
NSCharacterSet *notAllowed = [[NSCharacterSet
characterSetWithCharactersInString:@"*0123456789"] invertedSet];
NSRange range = [inputString rangeOfCharacterFromSet:notAllowed];
BOOL unauthorized = (range.location != NSNotFound);
答案 1 :(得分:5)
如果您想使用NSPredicate
,可以执行以下操作:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '[0-9*]+'"];
if ([predicate evaluateWithObject:@"0*2481347*"]) {
NSLog(@"passes!");
} else {
NSLog(@"fails!");
}
这是使用NSPredicate
的内置正则表达式匹配的东西。 :)