我有一个包含3个名字的数组。
var patients = ["Kund Karlsson", "Test Vid behov", "Test Övrigt"]
我需要按字母顺序对这些名称进行排序。这是它应该被命令的结果。
我按照这个patients.sort({ $0 < $1 })
对数组进行排序,但得错了顺序。
我认为这是由unicode字母Ö
引起的。
当字符串中有unicode字符时,是否有办法处理排序?
谢谢。
答案 0 :(得分:4)
我想Ö在英语中被视为 O ,但对于所有语言而言可能都不是这样。您可以使用以下内容:
patients.sort {
$0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedDescending
}
结果取决于您系统的区域设置。要使用特定的区域设置:
var patients = ["Kund Karlsson", "Test Vid behov", "Test Övrigt"]
let locale = NSLocale(localeIdentifier: "sv_SE")
patients.sort {
let str1 = $0 as NSString
let str2 = $1 as NSString
return str1.compare(str2, options: .CaseInsensitiveSearch, range: NSMakeRange(0, str1.length), locale: locale) == NSComparisonResult.OrderedAscending
}