我有一个随机排列的(应用程序版本的)字符串数组,如下所示:
var arrayOfStrings = ["2.12.5", "2.12.10", "2.2", "2.11.8"]
排序后的数组应为[“ 2.2”,“ 2.12.10”,“ 2.12.5”,“ 2.11.8”](按最新顺序排列)。我正在尝试对它进行排序。
编辑:我不好,排序后的数组实际上应该是[“ 2.12.10”,“ 2.12.5”,“ 2.11.8”,“ 2.2”]。使用上面的解决方案。
//Compare by string
array.sortInPlace({ //This returns ["2.2", "2.12.5", "2.12.10", "2.11.8"]
$0 > $1
})
//Compare by int
array.sortInPlace({ //This returns ["2.12.10", "2.12.5", "2.11.8", "2.2"]
Int($0.stringByReplacingOccurrencesOfString(".", withString: "")) > Int($1.stringByReplacingOccurrencesOfString(".", withString: ""))
})
所有这些都无法正常工作。返回正确数组的最佳方法是什么?
最简单的办法是使用compare
具有.NumericSearch
:
arrayOfStrings.sortInPlace { $0.compare($1, options: .NumericSearch) == .OrderedAscending }
显然,如果要降序使用,请使用.OrderedDescending
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句