确定字符串是否大于另一个字符串

时间:2013-03-21 20:30:46

标签: c# string integer

我有两个字符串

 string A = "1.0.0.0";
 string B = "1.0.0.1";

我需要以某种方式评估B大于A(版本明智)将这两个字符串转换为整数或小数等。

我尝试了以下

Decimal S = Convert.ToDecimal(A);
int S = Convert.ToInt32(A);

但不断收到以下错误,“输入字符串的格式不正确。”

任何帮助将不胜感激。

6 个答案:

答案 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等于“”。