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

Anb*_*van 3 c# regex

如何使用Regex查找最新版本号?例如

3.0.0.0和3.1.0.0

4.0.1.0和4.0.1.2

问候

庵埠

use*_*116 11

为何使用正则表达式?他们没有进行比较.但是,System.Version不仅会解析字符串,还支持比较:

// 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);
}
Run Code Online (Sandbox Code Playgroud)

或者如果你在枚举中有它们,它可以很好地与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)));
}
Run Code Online (Sandbox Code Playgroud)