将具有多个小数的字符串转换为整数/数字VB.NET

时间:2015-03-13 02:33:44

标签: vb.net decimal version-numbering

我正在试图找出如何比较两个字符串(数字和多个小数)以查看数字更大的字符串。

一个字符串是从注册表中读取的版本信息,与从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?

1 个答案:

答案 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'