【发布时间】: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 版本数组进行 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中你可以使用:
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]
【讨论】:
1.8.2.7.. 或1.8.0.1.. ?
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]
您可以通过以下实现对其进行排序:
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"]
【讨论】: