2016-08-02 68 views
9

我想按字母順序對字符串數組進行排序。使用標準排序功能時,它在字符串不包含Å,Ä或Ö(瑞典語)時起作用。排序字符串數組包含Å,Ä和Ö - Swift

我想訂購它像A ... Z,Å,Ä,Ö。相反,產生的順序是A ... Z,Ä,Å,Ö。

我試圖使用localizedCompare,但沒有得到它的工作。在這種情況下,Å和Ä被翻譯爲'A',Ö翻譯爲'O'。

let songs = self.allSongs.sort { return $0.title.localizedCompare($1.title) == .OrderedAscending } 

關於如何做到這一點的任何想法?

回答

15

我想訂購就好了... Z,A,A,O

這是在瑞典的語言環境定義的排序,所以你必須 設置明確,如果當前區域不是瑞典:

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 說法。

Upate爲雨燕3:

let titles = [ "Z", "Ö", "Å", "Ä", "A" ] 

let swedish = Locale(identifier: "sv") 
let sortedTitles = titles.sorted { 
    $0.compare($1, locale: swedish) == .orderedAscending 
} 

print(sortedTitles) // ["A", "Z", "Å", "Ä", "Ö"] 
+0

謝謝,工作就像一個魅力。 – atlas

相關問題