myArray = [Step 6, Step 12, Step 5, Step 14, Step 4, Step 11, Step 16, Step 9,
Step 3, Step 13, Step 8, Step 2, Step 10, Step 7, Step 1, Step 15]
上記の配列をこのように並べ替えるにはどうすればよいでしょうか?
[Step 1, Step 2, Step 3, Step 4, ....]
私はこの関数をSwiftで使用しましたsort(&myArray,{ $0 < $1 })
が、このようにソートされました
[Step 1, Step 10, Step 11, Step 12, Step 13, Step 14, Step 15, Step 16, Step 2,
Step 3, Step 4, Step 5, Step 6, Step 7, Step 8, Step 9]
ベストアンサー1
もう一つの方法はlocalizedStandardCompare:
ドキュメントより:
この方法は、Finder のような並べ替えが適切なリストや表にファイル名やその他の文字列が表示される場合に必ず使用してください。
これにより、現在のロケールに応じて文字列が並べ替えられます。例:
let myArray = ["Step 6", "Step 12", "Step 10"]
let ans = sorted(myArray,{ (s1, s2) in
return s1.localizedStandardCompare(s2) == NSComparisonResult.OrderedAscending
})
println(ans)
// [Step 6, Step 10, Step 12]
アップデート:上記の回答はかなり古く、Swift 1.2向けです。スイフト3バージョンは(@Ahmad に感謝):
let ans = myArray.sorted {
(s1, s2) -> Bool in return s1.localizedStandardCompare(s2) == .orderedAscending
}
別のアプローチについては、https://stackoverflow.com/a/31209763/1187415、Swift 3に翻訳されましたhttps://stackoverflow.com/a/39748677/1187415。