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