我正在尝试按字母顺序对数组进行排序。在瑞典字母表中,字母 Å 是字母表中倒数第三个字母,因此下面的数组应按 A, B, Å
排序。但它的排序方式如下 A, Å, B
。造成这种行为的原因是什么?
NSArray *test = @[@"Å", @"A", @"B"];
NSArray *sortedTest = [test sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
// Output is A, Å, B
最佳答案
也许当前的语言环境不是瑞典语言环境?
如果您明确使用瑞典语言环境对字符串进行排序,它会按预期工作:
NSArray *test = @[@"Å", @"A", @"B"];
NSLocale *swedish = [[NSLocale alloc] initWithLocaleIdentifier:@"sv"];
NSArray *sortedTest = [test sortedArrayWithOptions:0
usingComparator:^(NSString *v1, NSString *v2) {
return [v1 compare:v2 options:NSCaseInsensitiveSearch
range:NSMakeRange(0, [v1 length])
locale:swedish];
}];
// Output: A, B, Å
关于objective-c - localizedCaseInsensitiveCompare 似乎不适用于瑞典语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14176943/