对String数组进行排序并忽略大小写

Gar*_*man 19 ios swift

下面的代码用于排序字符串数组,如果它们都是小写或全部大写但我想在排序时忽略大小写.我怎么能这样做?以下是自定义类的数组.

resultListArray.sort({ $0.fileName.compare($1.fileName) == NSComparisonResult.OrderedAscending })

Leo*_*bus 39

你可以使用String方法localizedCompare()

更新:Xcode 8.2•Swift 3.0.2

let array = ["def","Ghi","Abc" ]

let sorted1 = array.sorted{$0.compare($1) == .orderedAscending} 
print(sorted1)  // ["Abc", "Ghi", "def"] this is case SENSITIVE!

let sorted2 = array.sorted{$0.localizedCompare($1) == .orderedAscending}
print(sorted2) // ["Abc", "def", "Ghi"]


// you can also use the String compare options parameter to give you more control when comparing your strings
let sorted3 = array.sorted{$0.compare($1, options: .caseInsensitive) == .orderedAscending }
print(sorted3)   // ["Abc", "def", "Ghi"]\n"

// which can be simplifyed using the string method caseInsensitiveCompare
let sorted4 = array.sorted{$0.caseInsensitiveCompare($1) == .orderedAscending}
print(sorted4) // ["Abc", "def", "Ghi"]\n"

// or localized caseInsensitiveCompare
let array5 = ["Cafe B","Café C","Café A"]
let sorted5 = array5.sorted{$0.localizedCaseInsensitiveCompare($1) == .orderedAscending}
print(sorted5) // "["Café A", "Cafe B", "Café C"]\n"
Run Code Online (Sandbox Code Playgroud)

  • 感谢上帝。我花了很长时间才意识到排序是区分大小写的 (2认同)

Qby*_*yte 15

您可以将其转换String为小写,然后进行比较:

array.sort{ $0.lowercaseString < $1.lowercaseString }
Run Code Online (Sandbox Code Playgroud)