我想将一个字符串如“10.0.20”解析为一个数字,以便比较C#.net
中具有相同格式的另一个字符串例如,我将比较这两个数字,看看哪个数字小于另一个数字: if(10.0.30< 10.0.30)....
我不确定我应该使用哪种解析方法,因为在这种情况下decimal.Parse(string)不起作用。
感谢您的时间。
编辑:@Romoku回答了我的问题我从来不知道有一个版本类,这正是我需要的。 TIL。谢谢大家,如果不是你的话,我会花几个小时挖掘表格。
答案 0 :(得分:9)
您尝试解析的字符串看起来像版本,因此请尝试使用Version
类。
var prevVersion = Version.Parse("10.0.20");
var currentVersion = Version.Parse("10.0.30");
var result = prevVersion < currentVersion;
Console.WriteLine(result); // true
答案 1 :(得分:1)
版本看起来是最简单的方法,但是,如果您需要无限的“小数位”,请尝试以下
private int multiDecCompare(string str1, string str2)
{
try
{
string[] split1 = str1.Split('.');
string[] split2 = str2.Split('.');
if (split1.Length != split2.Length)
return -99;
for (int i = 0; i < split1.Length; i++)
{
if (Int32.Parse(split1[i]) > Int32.Parse(split2[i]))
return 1;
if (Int32.Parse(split1[i]) < Int32.Parse(split2[i]))
return -1;
}
return 0;
}
catch
{
return -99;
}
}
如果第一个字符串从左到右更大,则返回1;如果是字符串2,则返回-1;如果相等,则返回0,对于错误,返回-99。
所以会为
返回1string str1 = "11.30.42.29.66";
string str2 = "11.30.30.10.88";