atl*_*las 16 sorting string ios swift
我正在尝试按字母顺序对字符串数组进行排序.使用标准排序功能,当字符串不包含Å,Ä或Ö(瑞典语)时,它可以工作.
我想点A ... Z,Å,Ä,Ö.而是产生的订单是A ... Z,Ä,Å,Ö.
我尝试使用localizedCompare,但没有让它工作.在这种情况下,Å和Ä被翻译为'A'和Ö到'O'.
let songs = self.allSongs.sort { return $0.title.localizedCompare($1.title) == .OrderedAscending }
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?
Mar*_*n R 29
我想点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", "Å", "Ä", "Ö"]
Run Code Online (Sandbox Code Playgroud)
对于不区分大小写的排序,请添加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", "Å", "Ä", "Ö"]
Run Code Online (Sandbox Code Playgroud)