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

本文关键字:字符串 是否 大于 另一个 一个 | 更新日期: 2023-09-27 18:05:06

我有两个字符串

 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");

类提供操作符来检查一个版本是否大于或小于另一个版本。

对"。"进行分割。然后将每个部分转换为整型。从左边开始:如果A的片段较低,则报告A为第一。如果B的片段较低,则报告B为第一。否则,移动到下一个片段。如果你已经在最后一个片段,报告它们是相等的。

如果你的字符串最多有四个部分(比如版本号),那么就像其他人建议的那样,使用System会更容易。类版本。

不使用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

Replace将第一个字符串更改为本例中的第二个字符串。