【问题标题】:localizedCaseInsensitiveCompare does not seem to work with swedish characterslocalCaseInsensitiveCompare 似乎不适用于瑞典语字符
【发布时间】:2013-01-05 22:10:55
【问题描述】:

我正在尝试按字母顺序对数组进行排序。在瑞典字母表中,字母 Å 是字母表中倒数第三个字母,因此下面的数组应该像 A, B, Å 那样排序,但它却像 A, Å, B 那样排序。这种行为的原因可能是什么?

NSArray *test = @[@"Å", @"A", @"B"];

NSArray *sortedTest = [test sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
// Output is A, Å, B

【问题讨论】:

标签: objective-c cocoa sorting localization


【解决方案1】:

也许当前语言环境不是瑞典语言环境?

如果您明确使用瑞典语语言环境对字符串进行排序,它会按预期工作:

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, Å

【讨论】:

  • 啊当然可能是这样。一会儿试试这个。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 2011-11-01
相关资源
最近更新 更多