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

我想转换字符串例如:

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

像这样的二维数组

 {{1,apple},{2,ball},{3,cat}} 

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

谢谢..

  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采用正则表达式,所以元字符| 需要逃避。

也可以看看

  • 正则表达式和转义特殊字符
  • Java Arrays.equals()为二维数组返回false。
    • 对多维数组使用Arrays.deepToStringArrays.deepEquals

替代

如果您知道将有多少行和列,您可以预先分配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]]"