Swift对包含字符串和数字的数组进行排序

dac*_*669 21 arrays sorting swift

我有一个字符串数组,

let array = [ "10", "1", "101", "NA", "100", "20", "210", "200", "NA", "7" ]
Run Code Online (Sandbox Code Playgroud)

我想将输出按升序排序为,

let sorted = [ "1", "7", "10", "20", "100", "101", "200", "210", "NA", "NA" ]
Run Code Online (Sandbox Code Playgroud)

我尝试使用sorted命令,但遇到2位以上时不起作用,例如:100,101,200等.

array.sorted { $0? < $1? }
Run Code Online (Sandbox Code Playgroud)

得到这个的简单方法是什么?

Leo*_*bus 55

您可以使用String方法localizedStandardCompare

let array = [ "10", "1", "101", "NA", "100", "20", "210", "200", "NA", "7" ]
let sorted = array.sorted {$0.localizedStandardCompare($1) == .orderedAscending}

print(sorted) // ["1", "7", "10", "20", "100", "101", "200", "210", "NA", "NA"]
Run Code Online (Sandbox Code Playgroud)

或者sort(by:)在MutableCollection上使用该方法:

var array = [ "10", "1", "101", "NA", "100", "20", "210", "200", "NA", "7" ]
array.sort {$0.localizedStandardCompare($1) == .orderedAscending}

print(array) // ["1", "7", "10", "20", "100", "101", "200", "210", "NA", "NA"]
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.它完美地运作! (2认同)