2017-04-24 10 views
0

文字列が文字列の配列と一致する(大文字小文字を区別しない)場合に検索しようとしています。大文字と小文字が同じ場合にこれを行う良い方法があります。代わりに、以下のコードは、大文字と小文字を区別しない一致が存在するかどうかを教えてくれます。しかし、マッチで大文字と小文字を区別しない場合はインデックスを教えてもらえません。IOS/Objective-C:文字列の配列の文字列のインデックスを大文字と小文字を区別しないで取得する

誰でもこれを行う方法を提案できますか?

- (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
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することができます。

関連する問題