我正在试图找出如何比较两个字符串(数字和多个小数)以查看数字更大的字符串。
一个字符串是从注册表中读取的版本信息,与从XML文件读取的字符串值进行比较。
这个例子可以模拟我想要做的事情。让我们说string One变量是我从注册表中读取的字符串变量和字符串来自XML的两个变量。
Dim One As String = "10.0.0.0"
Dim Two As String = "2.0.0.0"
If Two >= One Then MsgBox("Greater") Else MsgBox("Smaller")
以下代码无法正确比较,因为这些是字符串,字符串比较将10的值视为小于2,尽管10实际上大于2。
我尝试过一些整数转换,但没有运气,小数点会导致问题。
有谁知道如何将其转换为数字/整数,以便我们能够以某种方式转换字符串,以便10.0.0.0被视为大于2.0.0.0?
答案 0 :(得分:1)
您的字符串看起来可能是版本代码。在这种情况下,您可能希望以不同于整数的方式对待它们。对于整数:
Dim str1 = "10.0.0.0"
Dim str2 = "2.0.0.0"
Dim str3 = "10.0.0.1"
Dim n1 = Convert.ToInt32(str1.Split("."c)(0))
Dim n2 = Convert.ToInt32(str2.Split("."c)(0))
在"。"上拆分字符串后,第一个元素将转换为整数,以便n1
为10,n2
为2,允许您直接比较它们
如果他们做代表版本,例如str1
vs str3
,您最终可以使用多个测试来检查每个子细分。
.NET包含Version
类型,仅用于此类事项:
Dim v1 As New Version(str1)
Dim v2 As New Version(str3)
If v1 > v2 Then
' first ver is larger
Else
' str3 contains larger ver
End If
无需单独测试Major / Minor / Build / Revision部件 - Type会为您完成所有这些操作。顺便提一下,一旦你有一个有效的Version
变量,就可以使用ToString()
以相同的格式创建一个字符串:
Console.WriteLine("The Version is: '{0}'", v2.ToString())
结果:
版本为:' 10.0.0.1'