确定一个字符串是否大于另一个字符串
本文关键字:字符串 是否 大于 另一个 一个 | 更新日期: 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将第一个字符串更改为本例中的第二个字符串。