【问题标题】:How to sort a String array based on letter/symbol/number如何根据字母/符号/数字对字符串数组进行排序
【发布时间】:2019-10-12 05:52:22
【问题描述】:

我有一个String 数组

let myArray = ["b", "a", "*", "c", "5"]

我想对其进行排序。排序后,排序后的字母应在前,符号和数字应在后。

let sortedArray = myArray.sorted { $0 < $1 }
print(sortedArray) 
//I get ["*", "5", "a", "b", "c"]
//I want ["a", "b", "c", "5", "*"]

编辑:我看到了这个Answer。有什么更短/更好的方法吗?

【问题讨论】:

  • 我不这么认为

标签: arrays swift sorting


【解决方案1】:

有一个更好的方法,我写了这个函数,比你链接的要短得多。希望你喜欢它! :)

func sortCharacters(array : [String]) -> [String] {
    let letters = array.joined().filter {$0.isLetter}.sorted()
    let numbers = array.joined().filter {$0.isNumber}.sorted()
    let symbols = array.joined().filter {!$0.isLetter && !$0.isNumber}.sorted()
    return Array(letters + numbers + symbols).map {String($0)}
}

let chars = ["*", "5", "a", "b", "c"]
print(sortCharacters(array: chars)) //["a", "b", "c", "5", "*"]

【讨论】:

    猜你喜欢
    • 2016-06-17
    • 2021-08-17
    • 1970-01-01
    • 2011-03-10
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多