如何将String的所有字符分组为2d char数组?

时间:2015-04-25 20:12:26

标签: java arrays string character

我想知道如何将String的所有字符分组到char [][]。假设我有一个

String M = "x a b \n"+
                     "s d w \n"+
                     "D e f"

如何将上述String的字符分组为2d char? 该方法应按原样对字符进行分组,即:

x a b
s d w
D e f

public void  groupChars (String lines)
{
   char [][]temp = new char [3][3];

}

3 个答案:

答案 0 :(得分:2)

这样做的一种方法是[虽然我使用了String数组]

public class Test1
{
    public static void main(String args[])
    {
        String s = "x a b \n"+
                "s d w \n"+
                "D e f";

            String[] splitParts = s.split(" ");

            String[][] newArray = new String[splitParts.length/3][3];
            for (int i = 0, a = 0; a < newArray.length; a++) {
                newArray[a][0] = splitParts[i++];
                newArray[a][1] = splitParts[i++];
                newArray[a][2] = splitParts[i++];
            }
            System.out.println(java.util.Arrays.deepToString(newArray));


    }
}

输出:

[[x, a, b], [
s, d, w], [
D, e, f]]

答案 1 :(得分:1)

您提供的整个String M不适合char[3][3]数组,因为它只能包含9个char。如果您调整大小,则可以执行以下操作 -

    int i=0; 

    for( int row=0; row<3; row++){
     for(int column=0; column<3; column++){
        array[row][column]=M.charAt(i++);
     }
    }

答案 2 :(得分:1)

如果您事先不知道String的大小,请在其间使用List。您可以使用String.split获取行,并将每行拆分为包含String.toCharArray的字符数组:

String M = "x a b \n"+
            "s d w \n"+
            "D e f";

String[] rows = M.split("\n");    
List<char[]> charArrayList = new ArrayList<char[]>();
for (String row: rows) {
    charArrayList.add(row.toCharArray());
}

char[][] twoDimensional = charArrayList.toArray(new char[charArrayList.size()][]);

// test run to make sure we got it right
for (char[] row: twoDimensional) {
    for (char column : row) {
        System.out.print(column);
    }
    System.out.print("\n");
}

请注意,此代码会从原始String中排除换行符,但包含空格。