我可以直接在 Swift 中比较数字和字符串格式吗?
Can I compare number with string format directly in Swift?
我发现我可以直接在 Swift 中比较两个字符串格式的数字。
最初,我试图将我的 String 格式数字转换为 double 或 Int,然后进行比较。当我无意中发现我可以直接比较它们时,我在我的操场上做了一些测试。看起来结果都是正确的,即使数字是空字符串或“(Double)”与“(Int)”。
(例外):String格式的负数的测试用例会比较失败。
有谁知道这是否是 Swift String 中的默认行为?我不确定我是否可以在我的程序中使用它。
示例:
var numStrs1 = ["15", "12.2", "15", ""]
var numStrs2 = ["13", "12", "", "23.0"]
func compareNumStr(numStr1:String, numStr2:String) -> Bool {
return numStr1 > numStr2
}
for var i = 0; i < numStrs1.count; ++i{
compareNumStr(numStrs1[i], numStrs2[i])
}
字符串比较的默认实现依赖于 Unicode 归类算法 来源:http://oleb.net/blog/2014/07/swift-strings/
您现在进行的比较不是规范的 Int/Double
比较,而是它如何转换为 unicode。根据您希望如何使用这些信息,它可能不适合所有情况。就像你发现负数一样,你应该使用 .toInt
方法来获取你想要的数字,并比较整数而不是比较字符串。
我发现我可以直接在 Swift 中比较两个字符串格式的数字。
最初,我试图将我的 String 格式数字转换为 double 或 Int,然后进行比较。当我无意中发现我可以直接比较它们时,我在我的操场上做了一些测试。看起来结果都是正确的,即使数字是空字符串或“(Double)”与“(Int)”。
(例外):String格式的负数的测试用例会比较失败。
有谁知道这是否是 Swift String 中的默认行为?我不确定我是否可以在我的程序中使用它。
示例:
var numStrs1 = ["15", "12.2", "15", ""]
var numStrs2 = ["13", "12", "", "23.0"]
func compareNumStr(numStr1:String, numStr2:String) -> Bool {
return numStr1 > numStr2
}
for var i = 0; i < numStrs1.count; ++i{
compareNumStr(numStrs1[i], numStrs2[i])
}
字符串比较的默认实现依赖于 Unicode 归类算法 来源:http://oleb.net/blog/2014/07/swift-strings/
您现在进行的比较不是规范的 Int/Double
比较,而是它如何转换为 unicode。根据您希望如何使用这些信息,它可能不适合所有情况。就像你发现负数一样,你应该使用 .toInt
方法来获取你想要的数字,并比较整数而不是比较字符串。