检查字符串是否有禁止的单词

时间:2013-12-11 19:34:45

标签: ios objective-c regex string nsarray

我有一些代码可以创建一个字符串,长度为6个字符长的随机字母数字(“一键”)。

ex:“AJ4L3I”

我想确保这些键永远不会包含我可以添加到数组中的术语。

NSArray *bannedTerms = @[@"666", @"ass", @"hell", //etc., nil];

如何检查像“HJ666P”这样的NSString是否在我的bannedTerms NSArray或NSMutableArray中包含一个术语。

谢谢:)

2 个答案:

答案 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