我有一些代码可以创建一个字符串,长度为6个字符长的随机字母数字(“一键”)。
ex:“AJ4L3I”
我想确保这些键永远不会包含我可以添加到数组中的术语。
NSArray *bannedTerms = @[@"666", @"ass", @"hell", //etc., nil];
如何检查像“HJ666P”这样的NSString是否在我的bannedTerms NSArray或NSMutableArray中包含一个术语。
谢谢:)
答案 0 :(得分:4)
您可以在循环中调用rangeOfString:
以查看是否获得匹配,或使用正则表达式一次检查所有单词,而无需循环:
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"666|ass|hell|...etc."
options:NSRegularExpressionCaseInsensitive
error:&error];
NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:passcode options:0 range:NSMakeRange(0, passcode.length)];
if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
// Found a banned word.
}
答案 1 :(得分:3)
NSString *string = // generate the string
for(NSString *bannedTerm in bannedTerms) {
NSRange range = [string rangeOfString:bannedTerm options:NSCaseInsensitiveSearch];
if(range.location != NSNotFound) {
return NO; // failed check
}
}
return YES; // passed check