【问题标题】:How to fix: Sorting method如何修复:排序方法
【发布时间】:2019-05-03 14:16:32
【问题描述】:

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

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

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

【问题讨论】:

  • 你的函数确实每次为两个玩家ID返回相同的值,与他们的顺序无关。 – 请提供输入、预期输出和实际输出来证明您的问题。

标签: arrays swift string sorting


【解决方案1】:

只为两个项目调用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: "")
}

【讨论】:

    【解决方案2】:

    也许您打算使用&gt;

    func bucketNameGenerator(player1Id: String, player2Id: String) -> String {
        let uniqueBucketID = [player1Id, player2Id]
    
        let sortedUniqueBucketID = uniqueBucketID.sorted(by: >)
    
        let bucketName = sortedUniqueBucketID.joined().replacingOccurrences(of: "$", with: "")
    
        return bucketName
    }
    

    或者更简单:

    func bucketNameGenerator(player1Id: String, player2Id: String) -> String {
    
        let output = player1Id < player2Id ?
        player2Id + player1Id : player1Id + player2Id
    
        return output.replacingOccurrences(of: "$", with: "")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多