我想对字母数字进行排序,但数字应该在结尾而不是开头。例如
let array = ["1", "a", "b", "z", "3", "!"]
let sortedArray = array.sort { (firstObject, secondObject) -> Bool in
firstObject < secondObject
}
输出:
[“!”,“1”,“3”,“a”,“b”,“z”]
必填项:
[“a”,“b”,“z”,“1”,“3”,“!”]
提前致谢。
答案 0 :(得分:1)
假设您希望收到“数字应该结束而不是开始”,而不会看到您的示例带有意外的“!”排序。然后你可以这样做:
mvn clean package -DperformRelease=true
答案 1 :(得分:1)
这是适合您案例的解决方案:
预期结果为:
这是一种方法。
// Works with both arrays
var array = ["1", "b", "a", "z", "3", "!"]
//var array = ["1", "b", "A", "Z", "3", "!"]
func isLetter(char: String) -> Bool {
return ("a"..."z").contains(char) || ("A"..."Z").contains(char)
}
func isNumber(char: String) -> Bool {
return Int(char) != nil
}
let letters = array.filter(isLetter).sort{$0.lowercaseString < $1.lowercaseString}
let numbers = array.filter(isNumber).sort{Int($0) < Int($1)}
let others = Array(Set(array).subtract(letters).subtract(numbers)).sort{$0 < $1}
let sortedArray = letters + numbers + others
第一个数组是
["a", "b", "z", "1", "3", "!"]
第二个是
["A", "b", "Z", "1", "3", "!"]
它做你想要的。包括单元测试并将其包装在方法中,你很高兴。 Buuuut,它根本不是“干净”。