2017-05-09 45 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

不客氣 –