我有两个字符串
string A = "1.0.0.0";
string B = "1.0.0.1";
我需要以某种方式评估 B 是否大于 A (版本方面)或者将这两个字符串转换为整数或小数或其他东西。
我尝试了以下
Decimal S = Convert.ToDecimal(A);
int S = Convert.ToInt32(A);
但不断收到以下错误,“输入字符串的格式不正确。”
任何帮助将不胜感激。
请参阅版本类。
你可以做这样的事情:
Version a = new Version("1.0.0.0");
Version b = new Version("1.0.0.1");
if (b>a) //evaluates to true
blah blah blah
我没有亲自测试过这个确切的场景,但是这个Version
类允许你使用我在这里展示的比较运算符。
如果您的字符串最多有 4 个数字部分(由 分隔.
),您可以使用Version
该类来获取与这些字符串对应的强类型实体。Version
以预期的方式实现不同的比较运算符(==
,>
等<
...),因此您可以找出哪个更大:
var a = new Version(A);
var b = new Version(B);
if(a > b)
// a is larger
else if (a < b)
// b is larger
else
// they are identical
如果有超过 4 个部分,则需要将每个字符串拆分为其数字组件,将每个部分转换为等效的数字并比较两个结果集合。
就像是:
var aParts = A.Split('.');
var bParts = B.Split('.');
// assumes the string have the same number of parts
for(int i = 0; i < aParts.Length; i++)
{
var currA = int.Parse(aParts[i]);
var currB = int.Parse(bParts[i]);
if(currA == currB)
continue;
if(currA > currB)
// A is greater than B
else
// B is greater than A
}
你可以看看System.Version
类。如果字符串是这种格式或者可以转换成一个版本。
版本有比较器
如果要比较 .NET 中的版本字符串,则可以使用Version类。
Version version = new Version("1.0.0.0");
Version otherVersion = new Version(""1.0.0.1");
该类提供运算符来检查版本是否大于或小于另一个版本。
在“。”上拆分。然后将每个部分转换为 int。从左开始:如果A的fragment较低,则报告A在前。如果 B 的片段较低,则报告 B 是第一个。否则,移动到下一个片段。如果您已经在最后一个片段中,请报告它们是相等的。
如果您的字符串最多有四个部分(如版本号),那么正如其他人所建议的那样,使用System.Version类会更容易。
代替使用 VersionClass 的快速方法将是这样的。
string A = "1.0.0.0";
string B = "1.0.0.1";
int versionA = Convert.ToInt32(A.Replace(".", string.Empty));
int versionB = Convert.ToInt32(B.Replace(".", string.Empty));
if (b>a)
//something will happen here
在这种情况下,替换将第一个字符串更改为第二个字符串。空等于“”。