2011-04-12 71 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; 
}