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



我正在尝试弄清楚如何比较两个字符串(数字和多个小数),以查看哪个在数字上更大。

一个字符串是从注册表读取的版本信息与从 XML 文件中读取的字符串值进行比较。

不过,此示例可以模拟我正在尝试执行的操作。假设字符串 一个变量是我从注册表中读取的字符串变量和从 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?

您的字符串看起来像是版本代码。 在这种情况下,您可能希望将它们视为不同的方式,而不是简单地将它们视为整数。 对于整数:

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

无需单独测试主要/次要/构建/修订部分 - Type 会为您完成所有这些工作。 顺便说一下,一旦你有一个有效的Version变量,你可以使用ToString()创建一个相同格式的字符串:

Console.WriteLine("The Version is: '{0}'", v2.ToString())

结果:

版本是:"10.0.0.1"

相关内容

  • 没有找到相关文章