2017-05-09 44 views
4

我有一个字符串数组的数组,斯威夫特排序与字符串和数字

Array=[ "10", "1", "101", "NA", "100", "20", "210", "200", "NA", "7" ] 

我想获得升序作为排序的输出,

Sorted=[ "1", "7", "10", "20", "100", "101", "200", "210", "NA", "NA" ] 

我尝试使用排序命令但它遇到超过2位数字时不起作用,例如:100,101,200等。

Array.sorted { $0? < $1? } 

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

回答

16

您可以使用字符串方法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"] 
+1

谢谢。它完美的作品! – dacscan3669

+0

不客气 –