【发布时间】:2016-08-18 15:47:34
【问题描述】:
我有一个比较器,它对包含字母和数字的字符串数组进行排序,但似乎无法识别以我正在寻找的方式对它们进行排序的正则表达式。
我使用this question 作为比较器的参考。
array={string-a01,string-a20,string-a100,string-b01,string-b20,string-b100,string-c01,string-c20,string-c100 etc.}
Collections.sort(array, new Comparator<String>(){
public int compare(String o1, String o2) {
return extractInt(o1) - extractInt(o2);
}
int extractInt(String s) {
String num = s.replaceAll("\\D", "");
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
});
for (String element : array) {
System.out.println(element);
}
在引入比较器之前,输出为:string-a01, string-a100, string-a20, string-b01, string-b100, string-b20, string-c01, string-c20, string-c100
这段代码产生的输出是:string-a01, string-b01, string-c01 string-a20, string-b20, string-c20 string-a100, string-b100, string-c100
我希望它产生的输出是:string-a01, string-a20, string-a100, string-b01, string-b20, string-b100, string-c01, string-c20, string-c100
编辑:为澄清而编辑。在添加比较器之前,数组已更改并输出。
【问题讨论】:
标签: java regex sorting comparator