81
A
回答
193
你可以使用版本類?
http://msdn.microsoft.com/en-us/library/system.version.aspx
它有一個IComparable接口。請注意,這不適用於你已經顯示的5部分版本字符串(這真的是你的版本字符串?)。假設你的投入是字符串,這裏是與正常.NET 4部分組成的版本字符串工作示例:
static class Program
{
static void Main()
{
string v1 = "1.23.56.1487";
string v2 = "1.24.55.487";
var version1 = new Version(v1);
var version2 = new Version(v2);
var result = version1.CompareTo(version2);
if (result > 0)
Console.WriteLine("version1 is greater");
else if (result < 0)
Console.WriteLine("version2 is greater");
else
Console.WriteLine("versions are equal");
return;
}
}
8
如果你可以用major.minor.build.revision計劃生活,你可以使用.NET Version類。否則,你將不得不從左到右執行某種解析,直到你有區別或者返回兩個版本是平等的。
4
public int compareVersion(string Version1,string Version2)
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"([\d]+)");
System.Text.RegularExpressions.MatchCollection m1 = regex.Matches(Version1);
System.Text.RegularExpressions.MatchCollection m2 = regex.Matches(Version2);
int min = Math.Min(m1.Count,m2.Count);
for(int i=0; i<min;i++)
{
if(Convert.ToInt32(m1[i].Value)>Convert.ToInt32(m2[i].Value))
{
return 1;
}
if(Convert.ToInt32(m1[i].Value)<Convert.ToInt32(m2[i].Value))
{
return -1;
}
}
return 0;
}
+5
請注意,這將返回等於'compareVersion(「1.3」,「1.3.1」)' –
0
除了@JohnD的答案可能有必要在不使用拆分僅比較偏的版本號('')或其他字符串< - > INT轉換膨脹。我剛剛寫了一個擴展方法CompareTo與1個附加參數 - 要比較的版本號的重要部分的數量(1和4之間)。
public static class VersionExtensions
{
public static int CompareTo(this Version version, Version otherVersion, int significantParts)
{
if(version == null)
{
throw new ArgumentNullException("version");
}
if(otherVersion == null)
{
return 1;
}
if(version.Major != otherVersion.Major && significantParts >= 1)
if(version.Major > otherVersion.Major)
return 1;
else
return -1;
if(version.Minor != otherVersion.Minor && significantParts >= 2)
if(version.Minor > otherVersion.Minor)
return 1;
else
return -1;
if(version.Build != otherVersion.Build && significantParts >= 3)
if(version.Build > otherVersion.Build)
return 1;
else
return -1;
if(version.Revision != otherVersion.Revision && significantParts >= 4)
if(version.Revision > otherVersion.Revision)
return 1;
else
return -1;
return 0;
}
}
相關問題
- 1. 使用PowerShell'如果'語句來比較功能(Windows版本)
- 2. 使用比較功能
- 3. 我想不使用分割功能
- 4. 如何使用knitr來比較不同版本R的性能?
- 5. 版本比較
- 6. 比較功能
- 7. 分割功能
- 8. 比較語義分割
- 9. 如何比較任意版本號?
- 10. perl的分割功能的使用
- 11. 逗號在XSLT分割功能1.0
- 12. 有沒有比較PHP功能和Go版本的參考?
- 13. iOS比較功能
- 14. 使用正則表達式比較兩個軟件版本號
- 15. JavaScript:分割功能
- 16. Android:分割功能不起作用
- 17. str分割功能不起作用
- 18. 比較所有功能分支與主
- 19. 使用qsort與比較功能
- 20. 子查詢而使用分割功能
- 21. 比較的兩個功能
- 22. 如何比較分割前的值?
- 23. Jquery的分割功能
- 24. Eclipse Git - 比較不同的分支以前的版本
- 25. 比較版本中產品版本
- 26. 使用百分比符號進行比較? %的JavaScript
- 27. 比較版本(字符串)
- 28. JavaScript網頁版本比較
- 29. yum比較版本如何?
- 30. 版本比較JSON文檔
你想要結果是什麼? – BoltClock
帶5個部件的版本?如果您使用的是典型的4部分版本,則可以使用System.Version類,其中包括用於比較版本和解析版本字符串的方法。 – psousa
x和y的類型是什麼? – Gleno