这个问题在这里已有答案:
我有一个字符串数组。这些字符串以字母和数字开头。通过使用排序函数,我可以对数字进行排序,然后按字母顺序对字符串进行排序。
let tricks = [ "360", "540", "720", "Blunt", "Nose Grind", "Method Air", "360 Mute Grab", "Japan Air"]
let sortedTricks = tricks.sorted { $0.lowercased() < $1.lowercased() }
print(sortedTricks)
// ["360", "360 Mute Grab", "540", "720", "Blunt", "Japan Air", "Method Air", "Nose Grind"]
我如何升序 - 先将字母排序,然后按升序排序?最终,这就是我希望上面打印的方式:
// ["Blunt", "Japan Air", "Method Air", "Nose Grind", "360", "360 Mute Grab", "540", "720"]
目前还不清楚你想要什么,因为你的口头描述与你所显示的输出不符。从给定的输入中很容易实现显示的输出:
let tricks = [ "360", "540", "720", "Blunt", "Nose Grind", "Method Air", "360 Mute Grab", "Japan Air"]
func startsWithANumber(_ s:String) -> Bool {
return "0123456789".contains(s.first!)
}
let nonnumbers = tricks.filter {!startsWithANumber($0)}
let numbers = tricks.filter {startsWithANumber($0)}
let result = nonnumbers + numbers.sorted()
// ["Blunt", "Nose Grind", "Method Air", "Japan Air", "360", "360 Mute Grab", "540", "720"]
但是,这是否正确涵盖了所有可能的输入集是不可能的,因为您没有以任何清晰或严谨的方式描述您想要的输出。