比如有一个形式是这样子的字符串 String str = "1aaaaaaa2bbbbbbb3ccccccc4ddddddd" ,就是每隔7个字符就是一个数字,数字中间的字符是可以是任何值。怎么把它转变为这样子的二维数组String[][] arg ={{a,a,a,a,a,a,a},{b,b,b,b,b,b,b},{c,c,c,c,c,c,c},{d,d,d,d,d,d,d}}。真是想了好久都没想出来啊!!大虾们觉得有难度吗?

解决方案 »

  1.   

    每隔7个截取一下 不就可以啦么? 用for循环加上str.subString();
      

  2.   

    用for循环 + split 取第一次 出来 aaaaaaa,bbbbbbb,cccccccc之类
    然后再分开 可行?
      

  3.   

    for example
    String str = "1aaaaaaa2bbbbbbb3ccccccc4ddddddd";
    String[] sa = str.split("\\d");
    String[][] sb = new String[sa.length][];
    for (int i=0; i<sa.length; i++) {
        sb[i] = sa[i].split("(?<=[a-zA-Z])", sa[i].length());
        System.out.println(Arrays.toString(sb[i]));
    }
      

  4.   

    如果不是英文字符,可以用 . 代替
    String str = "1aaaaaaa2bbbbbbb3ccccccc4ddddddd";
    String[] sa = str.split("\\d");
    String[][] sb = new String[sa.length][];
    for (int i=0; i<sa.length; i++) {
        sb[i] = sa[i].split("(?<=.)", sa[i].length());
        System.out.println(Arrays.toString(sb[i]));
    }
      

  5.   

    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String   str   =   "1aaaaaaa2bbbbbbb3ccccccc4ddddddd"; 
    String[]   strs   =   str.split( "[1-9]"); 
    for(String   s   :   strs)   { 
    System.out.println(s); 
    }
    }}
      

  6.   

    数字中间使任意字符,也可能就是数字,固定式7位的话,恩就写死好了 ,下面代码没测试,嗯自己看看吧 String str = "1aaaaaaa2bbbbbbb3ccccccc4ddddddd";
    int index = (str.length()+7)/8;
    System.err.println("index:"+index);
    String[][] result = new String[index][];
    for (int i = 0; i < index; i++) {
    String arrStr = str.substring(i*8+1, (i+1)*8+1);
    System.out.println("arrStr:"+arrStr);
    result[i] = new String[arrStr.length()];
    for (int j = 0; j < arrStr.length(); j++) {
    result[i][j] = arrStr.charAt(j)+"";
    }
    }
    System.out.println(result.toString());