我可以直接在Swift中将数字与字符串格式进行比较吗?

时间:2015-07-28 18:23:11

标签: ios string swift numbers compare

我发现我可以直接在Swift中比较String格式的两个数字。

最初,我试图将我的String格式编号转换为double或Int,然后进行比较。当我意外发现我可以直接比较它们时,我在操场上做了一些测试。看起来结果都是正确的,即使数字是空字符串或“(Double)”vs“(Int)” (例外):字符串格式中带负数的测试用例将无法进行比较。

有人知道这是否是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])
}

1 个答案:

答案 0 :(得分:1)

字符串比较的默认实现依赖于 Unicode排序规则算法来源:http://oleb.net/blog/2014/07/swift-strings/

您现在正在进行的比较不是规范的Int/Double比较,而是它如何转换为unicode。根据您希望如何使用这些信息,它可能不适合所有情况。就像你发现负数一样,你应该使用.toInt方法来获得你想要的数字,并比较整数而不是比较字符串。