我想用第二个字母对数组进行排序。有人有想法吗?我将键入一个值和键,应该像这样返回排序列表: 数组["你好","再见","怎么"等等"] 排序:你好,如何等,再见
static func sort(keyValue: [(key:String, value:String)]) -> [(key:String, value:String)] {
let returnValue = keyValue( {$0 < $1}
return returnValue
}
答案 0 :(得分:3)
您可以将sort
与标准sortInPlace
或let strings = ["hello", "bye", "how", "etc"]
let sortedStrings = strings.sort { $0.substringFromIndex($0.startIndex.advancedBy(1)) < $1.substringFromIndex($1.startIndex.advancedBy(1)) }
功能结合使用:
vi /etc/default/docker
答案 1 :(得分:2)
作为使用subStringFromIndex
的替代方法 - 一种特别适用于按第二字符排序(并且在相等的情况下;按字典顺序跟随字符)的每个字符串的替代方法 - 您可以使用每个字符串dropFirst()
的{{1}}方法:
CharacterView
这相当于使用let strings = ["hello", "bye", "how", "etc"]
let sortedStrings = strings
.sort { String($0.characters.dropFirst()) < String($1.characters.dropFirst()) }
print(sortedStrings) // ["hello", "how", "etc", "bye"]
和substringFromIndex
的解决方案,其优点是,如果advancedBy
数组包含空字符串({{1},则不会产生运行时异常()(尽管可以通过分别使用strings
和""
来解决advancedBy
解决方案。)
另请注意,词典比较会在任何小写字母之前对大写字母进行排序,以便.advancedBy(1, limit: $0.endIndex)
将排序为.advancedBy(1, limit: $1.endIndex)
。如果需要不区分大小写的排序,可以将["hello", "bYe", "hOw", "etc"]
属性应用于排序键:
["hOw", "bYe", "hello", "etc"]