Java中如何截取字符串数组中一段数字按大小进行排序,再输出整个排序后的字符串?

String[] meg ={"1#zhang#3207237”,"2#Wang#3207232“。。。}根据最后的数字大小排序后输出

帮助lz实现了一下,望采纳

 import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;


public class test {

    public static void main(String[] arg0){

        String[] Info = {"1#zhang#3207237","2#Wang#3207232"};
        Map<String, Integer> myMap = new LinkedHashMap(); 
        fillMap(myMap, Info);
        myMap = sortMap(myMap);  
        printMap(myMap);
    }

    public static void fillMap(Map<String, Integer> myMap, String[] Info){

        int i, j;
        for(i = 0; i < Info.length; i++){
            for(j = Info[i].length() - 1; j >= 0; j--){
                if(Info[i].charAt(j) == '#') break;
            }
            int numLen = Info[i].length() - j;
            String strNum = Info[i].substring(
                    Info[i].length() - numLen + 1, Info[i].length());
            Integer num = Integer.valueOf(strNum);
        //  System.out.println(num);
            myMap.put(Info[i], num);
        }
    }

    private static void printMap(Map map){  

        Iterator it = map.entrySet().iterator();  
        while(it.hasNext()){  
            Map.Entry entry = (Map.Entry) it.next();  
            System.out.println(entry.getKey());  
        }   
    }   

    public static Map sortMap(Map oldMap) {  
        ArrayList<Map.Entry<String, Integer>> list = 
                new ArrayList<Map.Entry<String, Integer>>(oldMap.entrySet());  
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {  


            public int compare(Entry<java.lang.String, Integer> arg0,  
                    Entry<java.lang.String, Integer> arg1) {  
                return arg0.getValue() - arg1.getValue();  
            }  
        });  
        Map newMap = new LinkedHashMap();  
        for (int i = 0; i < list.size(); i++) {  
            newMap.put(list.get(i).getKey(), list.get(i).getValue());  
        }  
        return newMap;  
    }  
}

利用正则表达式(或者利用ASCII码去判断是否为数字)去截取数字,然后拿到数字后稍微排序一下就可以了。

利用正则表达式(或者利用ASCII码去判断是否为数字)去截取数字,然后拿到数字后稍微排序一下就可以了。

输出原数组?你的意思是要把数字都排好序放前面,然后后面放字符?类似于这样:"77332210#zhang#”?

新建一个Map集合 将截取的数字作为Map的key 原来的字符串作为Map的value
排序之后,通过key就可以输出对应的value了
(数字必须不同,否则这方法无效)

看规律,这个串类似于json,按,分割,将分割后的每一段都封装成一个对象就好了

看规律,这个串类似于json,按,分割,将分割后的每一段都封装成一个对象就好了

利用正则表达式解决。这里只实现将其中的数字给解析出来。
public class Ceshi {
public static void main(String[] args){
String[] msg = {"1#zhang#3207237","2#Wang#3207232"};
for(String str:msg){
String[] msgtmp = str.split("\D+");
for(String str1:msgtmp){
System.out.println(str1);
}
}
}
}

楼上已经有具体的解决方案了。就不多说了,因为你这个有特殊的符号能够分割,比如根据最后一个#号找到index就可以拿到后面的数字了。

楼上有同学给出具体代码了,修改一个地方好了,截取最后的数字串,Info[i].split(Info[i].lastIndexOf("#")+1)

谢谢大家了,之前的题目通过split取出放在数组,两个数组排序。由于本人知道的很少只能运用简单的方法,谢谢大家给出的多种建议,以及写出的代码。