我想排序Java版本asc或desc的数组。我正在寻找可用于解决的正则表达式模式。请让我知道是否有人可以帮忙。用于排序Java版本的正则表达式
例如:['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的数组。我正在寻找可用于解决的正则表达式模式。请让我知道是否有人可以帮忙。用于排序Java版本的正则表达式
例如:['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.0_131'>'1.8.0_72'。 –
你是sur @FrankRoth哪个版本应该是firt的'1.8.2.7..'或'1.8.0.1..'? –
不知道你的2个版本发生在哪里,但是。 '1.8.2.7'>'1.8.0.1'。 –
您可以通过以下对其进行排序执行:
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' ]。我已经更新了这个问题。 – user2971450
[?Java或JavaScript的(http://stackoverflow.com/questions/245062/whats-the-difference-between-javascript-and-java) – Andreas
任何语言是好的 – user2971450