2016-08-02 18 views
9

Tôi đang cố sắp xếp một chuỗi chuỗi theo thứ tự bảng chữ cái. Với chức năng sắp xếp tiêu chuẩn, nó hoạt động khi chuỗi không chứa Å, Ä hoặc Ö (Tiếng Thụy Điển).Sắp xếp mảng chuỗi chứa Å, Ä và Ö - Swift

Tôi muốn đặt hàng như A ... Z, Å, Ä, Ö. Thay vào đó thứ tự được tạo ra là A ... Z, Ä, Å, Ö.

Tôi đã cố sử dụng localizedCompare, nhưng không làm cho nó hoạt động. Trong trường hợp này Å và Ä được dịch sang 'A' và Ö thành 'O'.

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

Bất kỳ ý tưởng nào về cách thực hiện việc này?

Trả lời

15

tôi muốn đặt nó như A ... Z, A, A, Ö

Đó là thứ tự theo quy định tại địa phương Thụy Điển, vì vậy bạn phải thiết lập nó một cách rõ ràng nếu Vị trí hiện tại không phải là Thụy Điển:

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

let swedish = NSLocale(localeIdentifier: "sv") 
let sortedTitles = titles.sort { 
    $0.compare($1, locale: swedish) == .OrderedAscending 
} 

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

Đối với một case-insensitive sắp xếp, thêm đối số options: .CaseInsensitiveSearch .

Upate cho 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", "Å", "Ä", "Ö"] 
+0

Cảm ơn, làm việc như một nét duyên dáng. – atlas

Các vấn đề liên quan