Case-Insensitive数组搜索

时间:2011-04-12 16:35:53

标签: ios iphone arrays search

我正在尝试在NSMutableArray中搜索字符串。我正在使用containsObject:当前但看起来这是区分大小写的。我需要搜索给定字符串的所有组合(trip)。任何想法都将不胜感激。

if ([self.theArray containsObject:trip]) {

}

3 个答案:

答案 0 :(得分:10)

不那么难:

BOOL found = NO;
for (NSString* str in self.theArray) {
   if ([str caseInsensitiveCompare:trip] == NSOrderedSame) {
       found = YES;
       break;
   }
}

答案 1 :(得分:3)

为NSArray创建一个类别并在其中添加此功能。

- (BOOL)containsStringCaseInsensitive:(NSString *)key {
    key = [key lowercaseString];
    for (int i = ([self count] - 1); i >= 0; i--) {
        NSObject * obj = [self objectAtIndex:i];
        if ([obj isKindOfClass:[NSString class]]) {
            NSString * strInArray = [(NSString *)obj lowercaseString];
            if ([key isEqualToString:strInArray]) {
                return YES;
            }
        }
    }

    return NO;
}

答案 2 :(得分:0)

块怎么样:

__block trip = @"blah";
if (NSNotFound!=[self.theArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop)
         {
             if (NSOrderedSame==[(NSString *)obj caseInsensitiveCompare:trip])
             {
                    stop=YES;
                    return YES;
             }
             return NO;
          }])
 {
       NSLog(@"It's a MATCH!");
 }