arrays - 如何修复:排序方法
问题描述
这是我处理对字符串数组进行排序的方法
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
上面的示例没有正确排序,但目标是每次使用两个输入值运行该方法时都获得一个相同的字符串。
解决方案
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: "")
}
推荐阅读
- python - StatsModels:为什么我们必须拟合模型?
- c# - How do I pull out the ”data" from a SVG, alter it, then put it back with correct format?
- javascript - 如何在 html 中获取一组值?
- r - R Web Scraping with rvest 和 V8
- python - import: I want script can be run by other file and also can be run directly
- html - 当父级已经使用 flex 来证明内容的合理性时,使用 flexbox 使用等高的 css 类
- javascript - 'this' 在类中未定义
- c# - 如何制作移动和连接的点?
- regex - 将可执行文件与可能包含空格的路径匹配
- state - Ngrx:如何防止元素数组中状态更新后的数据丢失?