2011-04-12 45 views
1

我想搜索一个字符串的NSMutableArray。我正在使用containsObject:目前,但它看起来像是区分大小写。我需要搜索给定字符串(旅行)的所有组合。任何想法将不胜感激。不区分大小写的数组搜索

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

}

回答

10

并不难:

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

你甚至可能想使用'-localizedCaseInsensitiveCompare:'。 – 2011-04-12 16:45:36

+0

辉煌。感谢您的帮助,我欣赏它。 – 2011-04-12 16:47:30

+0

不适合我。 – Nepster 2014-10-20 10:42:14

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!"); 
} 
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; 
}