首页 > 解决方案 > 如何修复:排序方法

问题描述

这是我处理对字符串数组进行排序的方法

func bucketNameGenerator(player1Id: String, player2Id: String) -> String { 
    var bucketName : String =  ""
    var uniqueBucketID = [String]()

    uniqueBucketID = [player1Id, player2Id]

    let sortedUniqueBucketID = uniqueBucketID.sorted(by: <)

    bucketName = sortedUniqueBucketID.joined().replacingOccurrences(of: "$", with: "")

    print("[bucketNameGenerator] bucketName: \(bucketName)")

    return String(bucketName)
}

这两个字符串值不是纯字符串,它们也包含数字值。这种排序方式每次都不会返回相同的值。在此处需要改进建议/指导每次创建不对称字符串的路径。

示例预期结果:

player1Id : 123jinrk1412941jdlndma
player2Id: 49812u4jldanec192hce12n

expected result both combined and sorted in an ascending order :
49812u4jldanec192hce12n123jinrk1412941jdlndma

上面的示例没有正确排序,但目标是每次使用两个输入值运行该方法时都获得一个相同的字符串。

标签: arraysswiftstringsorting

解决方案


sorted只要求两个项目是矫枉过正的。

compare考虑带有选项的字符串的数值numeric

func bucketNameGenerator(player1Id: String, player2Id: String) -> String {
    let result : String
    if player1Id.compare(player2Id, options: .numeric) == .orderedAscending {
        result = player1Id + player2Id
    } else {
        result = player2Id + player1Id
    }
    return result.replacingOccurrences(of: "$", with: "")
}

推荐阅读