更大,我有兩個字符串確定一個字符串是不是另一個字符串
string A = "1.0.0.0";
string B = "1.0.0.1";
我需要以某種方式評價B是大於A(版本明智的)或者這兩個字符串轉換爲整數或小數或東西。
我嘗試以下
Decimal S = Convert.ToDecimal(A);
int S = Convert.ToInt32(A);
但不斷收到以下錯誤:「輸入字符串的不正確的格式。」
任何幫助將不勝感激。
更大,我有兩個字符串確定一個字符串是不是另一個字符串
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