不知道排序规则,大概是这样吧,猜的 并且不知道顶楼的那个“a”到哪里去了,下面代码中没有去掉最后的“a” public static void main(String args[]) { // 拆分为数组 String s = "aa12asc3af89ds7f8sdfs"; String[] array = s.split("(?<=[^\\d]+)"); String[] subArray = null; List list = new ArrayList(); for (int i = 0; i < array.length; i++) { subArray = array[i].split("(?<=\\d+)"); for (int j = 0; j < subArray.length; j++) { list.add(subArray[j]); } }
// 排序 Object[]result = list.toArray(); Arrays.sort(result, new Comparator(){ public int compare(Object o1, Object o2) { if(o1.toString().matches("\\d+") && o2.toString().matches("\\d+")){ long long1 = Long.parseLong(o1.toString()); long long2 = Long.parseLong(o2.toString()); if(long2 < long1){ return 1; }else if(long2 == long1){ return 0; }else{ return -1; } }else{ return o1.toString().compareTo(o2.toString()); } } });
// 打印 for (int i = 0; i < result.length; i++) { System.out.println(result[i]); } }
测试完毕了,最后的排序好的结果,al和bl只等着楼主处理了,是join到一起,还是cout出来 String a = "12asc3a34bb6"; ArrayList<String> al = new ArrayList<String>(); ArrayList<String> bl = new ArrayList<String>(); Collections.addAll(al, a.split("[0-9]+")); Collections.addAll(bl, a.split("[a-zA-Z]+")); al.remove(""); bl.remove(""); Collections.sort(al); Collections.sort(bl, new Comparator(){ @Override public int compare(Object arg0, Object arg1) { return new Integer((String)arg0).compareTo(new Integer((String)arg1)); }});
注:我也是新学JAVA的,以前只是研究点面向过程的算法,面向对象的编程学习中,希望说的对你有用,呵呵
并且不知道顶楼的那个“a”到哪里去了,下面代码中没有去掉最后的“a”
public static void main(String args[]) {
// 拆分为数组
String s = "aa12asc3af89ds7f8sdfs";
String[] array = s.split("(?<=[^\\d]+)");
String[] subArray = null;
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
subArray = array[i].split("(?<=\\d+)");
for (int j = 0; j < subArray.length; j++) {
list.add(subArray[j]);
}
}
// 排序
Object[]result = list.toArray();
Arrays.sort(result, new Comparator(){
public int compare(Object o1, Object o2) {
if(o1.toString().matches("\\d+") && o2.toString().matches("\\d+")){
long long1 = Long.parseLong(o1.toString());
long long2 = Long.parseLong(o2.toString());
if(long2 < long1){
return 1;
}else if(long2 == long1){
return 0;
}else{
return -1;
}
}else{
return o1.toString().compareTo(o2.toString());
}
}
});
// 打印
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
ArrayList<String> al = new ArrayList<String>();
ArrayList<String> bl = new ArrayList<String>();
Collections.addAll(al, a.split("[0-9]+"));
Collections.addAll(bl, a.split("[a-zA-Z]+"));
al.remove("");
bl.remove("");
Collections.sort(al);
Collections.sort(bl, new Comparator(){
@Override
public int compare(Object arg0, Object arg1) {
return new Integer((String)arg0).compareTo(new Integer((String)arg1));
}});
System.out.println("Pause!~");