IOS / Objective-C:获取不区分大小写的字符串数组中的字符串索引

时间:2017-04-24 21:22:21

标签: ios case-insensitive

我试图找到一个字符串匹配(不区分大小写)字符串数组中的字符串,然后获取索引号。如果情况相同,有一种很好的方法可以做到这一点。或者,下面的代码可以告诉我是否存在不区分大小写的匹配。但是,当匹配不区分大小写时,我无法告诉我索引。

有人可以建议一种方法吗?

- (NSUInteger)findIndexOfWord:(NSString *)word inString:(NSString *)string {
      NSArray *substrings = [string componentsSeparatedByString:@" "];

     if ([substrings indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop){
     return (BOOL)([obj caseInsensitiveCompare:word] == NSOrderedSame);
     }] != NSNotFound) {
     // there's at least one object that matches term case-insensitively
         int index = [substrings indexOfObject:word]; //if a case-insensitive match returns -1.

         return index; // Will be NSNotFound if "word" not found

     }

}

1 个答案:

答案 0 :(得分:3)

NSString *word = @"YOLO";
NSArray<NSString *> *items = @[ @"hi", @"yolo", @"swag" ];

NSUInteger idx = [items indexOfObjectPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) {
    return [obj caseInsensitiveCompare:word] == NSOrderedSame;
}];

NSLog(@"%lu", (unsigned long)idx);
  

indexOfObjectPassingTest:返回第一个对象的索引   在给定块中传递测试的数组。

希望它有所帮助。请注意,idx可以是NSNotFound。