【问题标题】:Regex for sorting Java versions用于对 Java 版本进行排序的正则表达式
【发布时间】:2017-09-20 21:59:11
【问题描述】:

我想对 Java 版本数组进行 asc 或 desc 排序。我正在寻找可用于解决的正则表达式模式。如果有人可以提供帮助,请告诉我。

例如 arr: ['1.4.2_01', '1.4.11_01', '1.8.0_131', '1.6.0_45', '1.8.0_72', '9.2.4', '9.0.1']

【问题讨论】:

标签: java arrays regex


【解决方案1】:

在java中你可以使用:

String arr[] = {"1.4.2_01", "1.8.0_131", "1.6.0_45", "1.8.0_72", "9.2.4", "9.0.1"};
Arrays.sort(arr);

输出

System.out.println(Arrays.toString(arr));
[1.4.2_01, 1.6.0_45, 1.8.0_131, 1.8.0_72, 9.0.1, 9.2.4]

【讨论】:

  • 你是@FrankRoth 哪个版本应该是第一1.8.2.7..1.8.0.1..
  • 不确定你的 2 个版本出现在哪里,但是。 1.8.2.7 > 1.8.0.1.
  • 不,不是。这应该是正确的顺序:[1.4.2_01, 1.6.0_45, 1.8.0_72, 1.8.0_131 9.0.1, 9.2.4]
【解决方案2】:

您可以通过以下实现对其进行排序:

var versions = ["1.4.2_01", "1.6.0_45", "1.8.0_72", "1.8.0_131", "9.0.1", "9.2.4"];

var compare = function(v1,v2){

   v1splitted = v1.split('_');
   v2splitted = v2.split('_');

   if(v1splitted[0] === v2splitted[0]){
       if(parseInt(v1splitted[1]) > parseInt(v2splitted[1])){
           return 1;
       }
       return -1;
   }

    return (v1 > v2) ? 1 : -1 
}

var sortedVersions = versions.sort(compare);
// ["1.4.2_01", "1.6.0_45", "1.8.0_72", "1.8.0_131", "9.0.1", "9.2.4"]

【讨论】:

  • 嗨,弗兰克,感谢您的回答。这不适用于以下数组 ['1.4.2_01', '1.4.11_01', '1.8.0_131', '1.6.0_45', '1.8.0_72', '9.2.4', '9.0.1' ]。我已经更新了问题。
猜你喜欢
  • 1970-01-01
  • 2023-04-09
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
相关资源
最近更新 更多