检查名称的NSMutableArray是否具有多个字符的前缀

Man*_*esh 3 objective-c ios

我正在尝试将联系人姓名拆分为单独的,NSMutableArrays并希望在这些数组中包含带重音的字母.

if([[contact.givenName lowercaseString] hasPrefix:@"a"]){
        [selectedArray addObject:contact];
        NSLog(@"%@",contact.givenName);
    }
Run Code Online (Sandbox Code Playgroud)

以上内容适用于字母"a",但我希望包含以下内容:

@"a",@"á",@"â",@"ã",@"ä"
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?谢谢

Nir*_*v D 7

正如Larme所说,你需要NSDiacriticInsensitiveSearch像这样使用.

if ([contact.givenName length] >= 1) {
    NSString *nameFirstLetter = [contact.givenName substringToIndex:1];
    NSStringCompareOptions options = NSDiacriticInsensitiveSearch | NSCaseInsensitiveSearch;
    if([nameFirstLetter compare:@"a" options:options] == NSOrderedSame){
        [selectedArray addObject:contact];
        NSLog(@"%@",contact.givenName);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 最好将`NSDiacriticInsensitiveSearch | NSCaseInsensitiveSearch`放入`options`而不是转换为转换`lowercaseString`?将来会更具可读性,不是吗? (2认同)