按 swift 2.2 中的第二个字母对数组进行排序
Sort array by second letter in swift 2.2
我想按单词的第二个字母对数组进行排序。有人有想法吗?我将键入一个值和键,应该 return 排序列表如下:
数组 ["hello"、"bye"、"how" 等"]
排序:你好,怎么样,等等,再见
static func sort(keyValue: [(key:String, value:String)]) -> [(key:String, value:String)] {
let returnValue = keyValue( {[=11=] < }
return returnValue
}
您可以将 substringFromIndex
与标准 sort
或 sortInPlace
函数一起使用:
let strings = ["hello", "bye", "how", "etc"]
let sortedStrings = strings.sort { [=10=].substringFromIndex([=10=].startIndex.advancedBy(1)) < .substringFromIndex(.startIndex.advancedBy(1)) }
作为使用 subStringFromIndex
的替代方法——一种特别适用于按 second 字符排序的方法(在相等的情况下;按字典顺序跟随字符)每个字符串的 - 您可以使用每个字符串的 CharacterView
的 dropFirst()
方法:
let strings = ["hello", "bye", "how", "etc"]
let sortedStrings = strings
.sort { String([=10=].characters.dropFirst()) < String(.characters.dropFirst()) }
print(sortedStrings) // ["hello", "how", "etc", "bye"]
这等同于使用 substringFromIndex
和 advancedBy
的解决方案,好处是如果 strings
数组包含空字符串 (""
)(尽管这可以通过分别使用 .advancedBy(1, limit: [=20=].endIndex)
和 .advancedBy(1, limit: .endIndex)
作为排序键来解决 advancedBy
解决方案)。
另请注意,字典顺序比较会将大写字母排在任何小写字母之前,因此 ["hello", "bYe", "hOw", "etc"]
将排入 ["hOw", "bYe", "hello", "etc"]
。如果您想要不区分大小写的排序,您可以将 .lowercaseString
属性 应用于排序键:
let strings = ["hello", "bYe", "hOw", "etc"]
let sortedStrings = strings
.sort { String([=11=].lowercaseString.characters.dropFirst()) <
String(.lowercaseString.characters.dropFirst()) }
print(sortedStrings) // ["hello", "hOw", "etc", "bYe"]
我想按单词的第二个字母对数组进行排序。有人有想法吗?我将键入一个值和键,应该 return 排序列表如下: 数组 ["hello"、"bye"、"how" 等"] 排序:你好,怎么样,等等,再见
static func sort(keyValue: [(key:String, value:String)]) -> [(key:String, value:String)] {
let returnValue = keyValue( {[=11=] < }
return returnValue
}
您可以将 substringFromIndex
与标准 sort
或 sortInPlace
函数一起使用:
let strings = ["hello", "bye", "how", "etc"]
let sortedStrings = strings.sort { [=10=].substringFromIndex([=10=].startIndex.advancedBy(1)) < .substringFromIndex(.startIndex.advancedBy(1)) }
作为使用 subStringFromIndex
的替代方法——一种特别适用于按 second 字符排序的方法(在相等的情况下;按字典顺序跟随字符)每个字符串的 - 您可以使用每个字符串的 CharacterView
的 dropFirst()
方法:
let strings = ["hello", "bye", "how", "etc"]
let sortedStrings = strings
.sort { String([=10=].characters.dropFirst()) < String(.characters.dropFirst()) }
print(sortedStrings) // ["hello", "how", "etc", "bye"]
这等同于使用 substringFromIndex
和 advancedBy
的解决方案,好处是如果 strings
数组包含空字符串 (""
)(尽管这可以通过分别使用 .advancedBy(1, limit: [=20=].endIndex)
和 .advancedBy(1, limit: .endIndex)
作为排序键来解决 advancedBy
解决方案)。
另请注意,字典顺序比较会将大写字母排在任何小写字母之前,因此 ["hello", "bYe", "hOw", "etc"]
将排入 ["hOw", "bYe", "hello", "etc"]
。如果您想要不区分大小写的排序,您可以将 .lowercaseString
属性 应用于排序键:
let strings = ["hello", "bYe", "hOw", "etc"]
let sortedStrings = strings
.sort { String([=11=].lowercaseString.characters.dropFirst()) <
String(.lowercaseString.characters.dropFirst()) }
print(sortedStrings) // ["hello", "hOw", "etc", "bYe"]