我有两个字符串
string A = "1.0.0.0";
string B = "1.0.0.1";
我需要以某种方式评估B大于A(版本明智)将这两个字符串转换为整数或小数等。
我尝试了以下
Decimal S = Convert.ToDecimal(A);
int S = Convert.ToInt32(A);
但不断收到以下错误,“输入字符串的格式不正确。”
任何帮助将不胜感激。
答案 0 :(得分:20)
请参阅Version Class。
你可以这样做:
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
类允许你使用像我在这里看到的比较运算符。
答案 1 :(得分:3)
如果您的字符串最多包含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
}
答案 2 :(得分:3)
您可以查看System.Version
课程。
如果字符串采用这种格式或者可以转换为版本。
版本有比较器
答案 3 :(得分:1)
如果要比较.NET中的版本字符串,则可以使用Version类。
Version version = new Version("1.0.0.0");
Version otherVersion = new Version(""1.0.0.1");
该类为操作员提供检查版本是否大于或小于其他版本的信息。
答案 4 :(得分:1)
拆分“。”。然后将每个部分转换为int。从左边开始:如果A的片段较低,则报告A是第一个。如果B的片段较低,则报告B是第一个。否则,转到下一个片段。如果你已经在最后一个片段,请报告它们是相同的。
如果您的字符串最多包含四个部分(例如版本号),那么正如其他人建议的那样,使用System.Version类更容易。
答案 5 :(得分:-2)
而不是使用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
替换将第一个字符串更改为第二个字符串,在本例中为string.Empty等于“”。