Sort alphanumeric array, consecutive numbers should reside at last

后端 未结 2 1640
我在风中等你
我在风中等你 2021-01-27 13:03

I want to sort an alphanumeric, but numbers should come at end instead of beginning. for instance

let array = [\"1\", \"a\", \"b\", \"z\", \"3\", \"!\"]
let sor         


        
2条回答
  •  耶瑟儿~
    2021-01-27 13:42

    Assume that you want to receive "numbers should come at end instead of beginning", without watching your example with unexpected "!" sorting. Then you can do this:

    let array = ["1", "a", "b", "z", "3", "!"]
    let sortedArray = array.sort { (firstObject, secondObject) -> Bool in
        let firstIsNumber = firstObject.rangeOfCharacterFromSet(NSCharacterSet.decimalDigitCharacterSet())?.count > 0
        let secondIsNumber = secondObject.rangeOfCharacterFromSet(NSCharacterSet.decimalDigitCharacterSet())?.count > 0
        if firstIsNumber != secondIsNumber {return secondIsNumber}
        return firstObject < secondObject
    }
    print(sortedArray)
    //["!", "a", "b", "z", "1", "3"]
    

提交回复
热议问题