java 中将一个字符串由 ";" " ," "=" 号 拆分并存入二维数组中

下面是我写的错误代码, 正确的返回值应该是 这种格式 [0][10] [1][15] [2][20] [3][30] [4][40]

谢谢

    @Override
    public String[][] getChartdtlsSplit(BasicChart basicChart) {//String[][]代表多维数组了.[][],可以理解为几行几列了.类型为String的.
            //String value = basicChart.getChartname();
            String value = "a=10,ab=15;b=20,bc=30;c=40;";

        //以 ; 与 = 进行拆分
        String[] temp  = value.split(";"); // 通过分号将字符串拆分成一维数组{"a=10";"ab=15";"B=20"}  
        String[][] arr = new String[temp.length][];// 初始化一个二维字符串数组,只指定了行数  
        for (int i = 0; i < temp.length; i++) {
            String[] tempAgain = temp[i].split(",|="); //继续分割并存到另一个一临时的一维数组当中  
            arr[i] = new String[tempAgain.length]; //根据tempAgain中的数组长度,为二维数组的列赋值  
            for (int j = 0; j < tempAgain.length; j++) { //  [a][10]  
                arr[i][j] = tempAgain[j];  //为二维数组赋值  
            }  
        }  
        return arr;  
                //最后返回二维数组,[0][10]  [1][15]  [2][20]  [3][30]  [4][40]
    }

使用正则把数据取出,在组合成二维数组

 String value = "a=10,ab=15;b=20,bc=30;c=40;";
             String regex="\\d+";
            Pattern pattern =Pattern.compile(regex);

             List list=new ArrayList();
             Matcher matcher = pattern.matcher(value);
             int j=0;
             while(matcher.find()){
                 list.add(matcher.group().toString());
                 j++;
             }
             String[][] arr = new String[j][2];// 初始化一个二维字符串数组,只指定了行数  
             for (int i = 0; i < list.size(); i++) {
                 arr[i][0]=i+"";
                 arr[i][1]=list.get(i).toString();
            }

第一步都错了,String[] temp = value.split(";"); // 通过分号将字符串拆分成一维数组{"a=10";"ab=15";"B=20"} ,你的数据格式不符合这个

 String value = "a=10,ab=15;b=20,bc=30;c=40;";
           String Value2= value.replaceAll(";", ",");
           String Value3=Value2.substring(0, Value2.length()-1);
           String[] temp  = Value3.split(",");

public static void main(String[] args) {
           String value = "a=10,ab=15;b=20,bc=30;c=40;";
           String Value2= value.replaceAll(";", ",");
           String Value3=Value2.substring(0, Value2.length()-1);
           String[] temp  = Value3.split(",");
           int[][] arr = new int[temp.length][2];

           for (int i = 0; i < temp.length; i++) {
                String[] tempAgain = temp[i].split("="); //继续分割并存到另一个一临时的一维数组当中 
                arr[i][0]=i;
                arr[i][1]=Integer.parseInt(tempAgain[1]);
                System.out.println(arr[i][0]+":"+arr[i][1]);
            }  
    }

第一步把,和=全部转换成;
第二步进行拆分value.split(";"),生成一个一维数组,
第三步取10,20,30这些数,

 /**
     * input   value="a=10,ab=15;b=20,bc=30;c=40;"
     * output  {{10, 15},{20, 30},{40}} 或者 {{10}, {15}, {20}, {30}, {40}}
     * @param value
     * @return
     */
    public String[][] getChartdtlsSplit(String value) {
        if (value == null || value.length() == 0) return null;
        //这里是以逗号为第二维数组的分割,如果不是则可以加上下面注释的一句
        //value = value.replace(",", ";");
        //首先按照;分割
        String[] first = value.split(";");
        //设定二维数组
        String[][] rtv = new String[first.length][];
        for (int i = 0, len = first.length; i < len; i++) {
            //按逗号分割
            String v = first[i];
            if(v.length() == 0) continue;
            String[] second = v.split(",");
            //设定二维数据的第二维度
            String[] rtvSecond = new String[second.length];
            for (int j = 0, lenj = second.length; j < lenj; j++) {
                //这里自己可以先校验数据的合法性
                String v2 = second[j].split("=")[1];
                rtvSecond[j] = v2;
            }
            rtv[i] = rtvSecond;
        }
        return rtv;
    }

如果是你说的那样,那么返回二维数据就没有任何意义,当然你也可以把这个数组最后转换一下

希望可以帮到你....

这题目里 a=10,ab=15;b=20,bc=30;c=40 ,是你随便起的变量名还是具有位置意义的?比如a,和ab

取出所有数字组装成二维数组,使用正则更好