C# 使用正则表达式比较两个软件版本号

C# 使用正则表达式比较两个软件版本号,c#,regex,C#,Regex,如何使用正则表达式查找最新版本号? 比如说 3.0.0.0和3.1.0.0 4.0.1.0和4.0.1.2 问候 anbu为什么要使用正则表达式?他们不进行比较。但是,它不仅会解析字符串,而且还支持比较: // Use your favorite comparison operator var current = new Version("4.0.1.2"); var found = new Version("4.0.1.0"); if (found > current) { Co

如何使用正则表达式查找最新版本号? 比如说

3.0.0.0和3.1.0.0

4.0.1.0和4.0.1.2

问候


anbu

为什么要使用正则表达式?他们不进行比较。但是,它不仅会解析字符串,而且还支持比较:

// Use your favorite comparison operator
var current = new Version("4.0.1.2");
var found = new Version("4.0.1.0");
if (found > current)
{
    Console.WriteLine("Upgrade needed to {0} from {1}", found, current);
}
else
{
    Console.WriteLine("No upgraded needed from {0}", current);
}
或者,如果在枚举中有它们,那么它可以很好地与LINQ配合使用:

var versions = new [] { "3.0.0.0", "3.1.0.0", "4.0.1.0", "4.0.1.2" };
foreach (var version in versions.Select(Version.Parse)
                                .OrderByDescending(v => v))
{
    Console.WriteLine("{0}", version);
}

// Group them by Major Version first, then sort
foreach (var major in versions.Select(Version.Parse)
                              .GroupBy(v => v.Major)
                              .OrderByDescending(g => g.Key))
{
    Console.WriteLine("{0}: {1}",
                      major.Key,
                      String.Join(", ", major.OrderByDescending(v => v)));
}
试试这个

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;

}
静态类程序
{
静态void Main()
{
字符串v1=“1.23.56.1487”;
字符串v2=“1.24.55.487”;
变量版本1=新版本(v1);
变量版本2=新版本(v2);
var结果=版本1。与(版本2)相比;
如果(结果>0)
Console.WriteLine(“版本1更大”);
否则如果(结果<0)
Console.WriteLine(“版本2更大”);
其他的
Console.WriteLine(“版本相同”);
返回;
}

}版本号只是一个数字。。比较3.0.0.0和3.1.0.0就像比较3000和3100一样,最简单的是:

int v1 = 3000;
int v2 = 3100;

if (v2 > v1) { my routine; }

你不需要正则表达式。在点处拆分版本字符串,将部分转换为整数,然后逐个比较(从主版本开始)。除非版本是
4.0.30319.1
(当前C编译器的版本号)。您没有提到使用相同的主版本号比较不同的版本!!!!!!