objective-c - localizedCaseInsensitiveCompare 似乎不适用于瑞典语字符

标签 objective-c cocoa sorting localization

我正在尝试按字母顺序对数组进行排序。在瑞典字母表中,字母 Å 是字母表中倒数第三个字母,因此下面的数组应按 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/

相关文章:

objective-c - 赋值运算符是否会生成 NSArray 的浅拷贝?

objective-c - Subview 不会出现在 Mavericks 上;作品《山狮》

javascript - JavaScript 的排序(compareFunction)是如何工作的?

objective-c - 在 Xcode 4 中是否有添加属性的快捷方式?

iphone - 自定义 UIActivityIndi​​cator,它是自定义框架的一部分或作为子类

iphone - 在 iphone uiautomation 中验证文本颜色

objective-c - 从桌面加载 NSImage 在 cocoa 应用程序中为零

xcode - 单击取消选择 NSCollectionViewItem

jQuery sortable(如何自定义可排序框内的可点击区域)

javascript - 如何按条件和空值始终排在最后的 3 个字段对对象数组进行排序