不区分大小写的数组search
我正在尝试search一个string的NSMutableArray。 我正在使用containsObject:目前,但它看起来像是区分大小写。 我需要search给定的string(旅行)的所有组合。 任何想法将不胜感激。
if ([self.theArray containsObject:trip]) {
}
并不难:
BOOL found = NO; for (NSString* str in self.theArray) { if ([str caseInsensitiveCompare:trip] == NSOrderedSame) { found = YES; break; } }
为NSArray创build一个类别并在其中添加该函数。
- (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; }
如何块:
__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!"); }