import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sorter {
public static void main(String[] args) {
List
strs.add("aa2");
strs.add("aa100");
strs.add("aa1");
strs.add("aa10");
strs.add("aa78");
System.out.println(strs);
// 用了一个Comparetor
Comparator
public int compare(String o1, String o2) {
// 前面3个IF主要是判空的
if (o1 == o2) {
return 0;
}
if (o1 == null) {
return 1;
}
if (o2 == null) {
return -1;
}
// 这里没有做太多的判断, index 代表第几个开始是数字, 直接从后面遍历
// 比如 aa11, 我们就会判断从下标[2]开始为不是数字, 就直接截取 [2] 后面, 即11
int index = 0;
for (index = o1.length() - 1; index >= 0
&& (o1.charAt(index) >= '0' && o1.charAt(index) <= '9'); index--)
;
int num1 = Integer.parseInt(o1.substring(index + 1));
for (index = o2.length() - 1; index >= 0
&& (o2.charAt(index) >= '0' && o2.charAt(index) <= '9'); index--)
;
int num2 = Integer.parseInt(o2.substring(index + 1));
return num1 - num2;
}
};
Collections.sort(strs, com);
System.out.println(strs);
}
}
import java.util.Arrays;
public class Paixu
{
static String[] strAfter;
static int paixu(String[] str){
String zifu;
int zifuNum;
int[] shuzi;
zifu = (str[0].split("[0-9]",2))[0];
zifuNum = zifu.length();
shuzi = new int[str.length];
strAfter = new String[str.length];
for(int i=0;i
}
Arrays.sort(shuzi);
for(int i=0;i
System.out.println(strAfter[i]);
}
return str.length;
}
public static void main(String[] args){
String[] str = {"asd123","asf3434","asd12","asd0"};
new Paixu().paixu(str);
}
}
输出:
asd0
asd12
asd123
asd3434
请按任意键继续. . .
说明:
字母长度相同才行...
格式固定是几个字母+几位数字吗?如果是还好办,怕的是形如这样的:aa10x58ydg92cbi9....