您如何比较两个版本号?

我不想要简单的1.0.0.0,但我正在寻找比较它们的方法

1.0.0.1

1.0.0.1rc1 / 1.0.0.1-rc1

1.0.0.1b

1.0.0.1a / 1.0.0.1-a

等等

他们按照最新的方向订购。

从PHP.net引用他们想要的功能


  version_compare()比较两个“ PHP标准化”版本号字符串。
  该函数首先用点替换_,-和+。在版本字符串中并插入点。在任何非数字之前和之后,例如“ 4.3.2RC1”变为“ 4.3.2.RC.1”。然后,它会比较从左到右的部分。如果零件包含特殊版本的字符串,则按以下顺序处理:在此列表中找不到的任何字符串

如何才能做到这一点?

还是默认有这样的东西?

最佳答案

使用semantic version library for .Net

要安装软件包:

 Install-Package semver


您可以解析/比较版本。

示例1:比较

     var v1 = new SemVersion(1, 0, 0, "rc1");
     Console.WriteLine(v1);
     var v2 = new SemVersion(1, 0, 0, "rc2");
     Console.WriteLine(v2);
     var r = SemVersion.Compare(v1,v2);
     //If v1 < v2   return -1
     //if v1 > v2   return +1
     //if v1 = v2   return 0
     Console.WriteLine(r); // -1


例2:解析

     var version = SemVersion.Parse("1.2.45-alpha-beta+nightly.23.43-bla");
    Console.WriteLine(version);
    Console.WriteLine( version.Major); //1
    Console.WriteLine( version.Minor); //2
    Console.WriteLine( version.Patch); //45
    Console.WriteLine(version.Prerelease); //alpha-beta
    Console.WriteLine(version.Build); //nightly.23.43


更新:

fiddle中的生活演示

10-07 19:53
查看更多