在swift 2.2中按第二个字母排序数组

时间:2016-05-07 06:22:49

标签: ios swift swift2 swift2.2

我想用第二个字母对数组进行排序。有人有想法吗?我将键入一个值和键,应该像这样返回排序列表: 数组["你好","再见","怎么"等等"] 排序:你好,如何等,再见

static func sort(keyValue: [(key:String, value:String)]) -> [(key:String, value:String)] {

    let returnValue = keyValue( {$0 < $1}

    return returnValue
}

2 个答案:

答案 0 :(得分:3)

您可以将sort与标准sortInPlacelet 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"]