确定一个字符串是不是另一个字符串
更大,我有两个字符串确定一个字符串是不是另一个字符串
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
类看一看。 如果字符串是以这种格式或可以转换为版本。
版本有comparers
如果你想版本字符串在.NET比较的话,你可以使用Version类。
Version version = new Version("1.0.0.0");
Version otherVersion = new Version(""1.0.0.1");
该类提供了运算符来检查版本是否大于或小于其他版本。
拆分“。”。然后将每个部分转换为int。从左边开始:如果A的片段较低,则报告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
更换改变这种情况下,第一串到第二个的String.Empty等于“”。
不适用于:1.0.256.0和2.0.0.0 – Mike 2013-12-25 12:10:32
使用Version类*是一种快速方法,它没有Mike刚才指出的可怕错误。 – 2016-10-14 15:13:15
你是否专门与IP地址工作? – RandomUs1r 2013-03-21 20:33:25
我正在处理版本,而不是IP地址。 – Butters 2013-03-21 20:47:43