Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于排序Java版本的正则表达式_Java_Arrays_Regex - Fatal编程技术网

用于排序Java版本的正则表达式

用于排序Java版本的正则表达式,java,arrays,regex,Java,Arrays,Regex,我想对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.s

我想对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]

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

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"]

任何语言都适用于@FrankRoth,您认为哪个版本应该是第一个
1.8.2.7..
1.8.0.1..
?不确定您的两个版本出现在哪里,但是<代码>1.8.2.7
1.8.0.1
。不,不是。这应该是正确的顺序:
[1.4.2\u 01、1.6.0\u 45、1.8.0\u 72、1.8.0\u 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']。我已经更新了问题。