我正在尝试按字母顺序对字符串数组进行排序。使用标准排序功能,当字符串不包含Å,Ä或Ö(瑞典语)时,它可以工作。
我想订购它像A ... Z,Å,Ä,Ö。而是产生的订单是A ...... Z,Ä,Å,Ö。
我尝试使用localizedCompare,但没有让它工作。在这种情况下,Å和Ä被翻译为'A'和Ö到'O'。
let songs = self.allSongs.sort { return $0.title.localizedCompare($1.title) == .OrderedAscending }
关于如何做到这一点的任何想法?
答案 0 :(得分:25)
我想订购它像A ... Z,Å,Ä,Ö
这是瑞典语语言环境中定义的排序,因此您必须这样做 如果当前语言环境不是瑞典语,则显式设置:
let titles = [ "Z", "Ö", "Å", "Ä", "A" ]
let swedish = NSLocale(localeIdentifier: "sv")
let sortedTitles = titles.sort {
$0.compare($1, locale: swedish) == .OrderedAscending
}
print(sortedTitles) // ["A", "Z", "Å", "Ä", "Ö"]
对于不区分大小写的排序,请添加options: .CaseInsensitiveSearch
参数。
Swift 3的更新:
let titles = [ "Z", "Ö", "Å", "Ä", "A" ]
let swedish = Locale(identifier: "sv")
let sortedTitles = titles.sorted {
$0.compare($1, locale: swedish) == .orderedAscending
}
print(sortedTitles) // ["A", "Z", "Å", "Ä", "Ö"]