在Java中将字符串转换为二维字符串数组

9

我喜欢将字符串转换为例如:

String data = "1|apple,2|ball,3|cat";

把它转换成一个二维数组,就像这样:
{{1,apple},{2,ball},{3,cat}}

我尝试使用split("")方法,但仍然没有解决 :(

谢谢..

Kai

1个回答

23
    String data = "1|apple,2|ball,3|cat";
    String[] rows = data.split(",");

    String[][] matrix = new String[rows.length][]; 
    int r = 0;
    for (String row : rows) {
        matrix[r++] = row.split("\\|");
    }

    System.out.println(matrix[1][1]);
    // prints "ball"

    System.out.println(Arrays.deepToString(matrix));
    // prints "[[1, apple], [2, ball], [3, cat]]"

这很简单,除了 String.split 需要使用正则表达式,所以元字符 | 需要转义。

另请参阅


另一种方法

如果您知道行数和列数,您可以预先分配一个String[][]并使用Scanner,如下所示:

    Scanner sc = new Scanner(data).useDelimiter("[,|]");
    final int M = 3;
    final int N = 2;
    String[][] matrix = new String[M][N];
    for (int r = 0; r < M; r++) {
        for (int c = 0; c < N; c++) {
            matrix[r][c] = sc.next();
        }
    }
    System.out.println(Arrays.deepToString(matrix));
    // prints "[[1, apple], [2, ball], [3, cat]]"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接