Sorting array alphabetically with number

Another variant is to use
localizedStandardCompare:. From the documentation:

This method should be used whenever file names or other strings are
presented in lists and tables where Finder-like sorting is
appropriate.

This will sort the strings as appropriate for the current locale.
Example:

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]

Update: The above answer is quite old and for Swift 1.2. A Swift 3 version is (thanks to @Ahmad):

let ans = myArray.sorted {
    (s1, s2) -> Bool in return s1.localizedStandardCompare(s2) == .orderedAscending
}

For a different approach see https://stackoverflow.com/a/31209763/1187415,
translated to Swift 3 at https://stackoverflow.com/a/39748677/1187415.

Leave a Comment