Преобразование строки в массив двухмерных строк в Java - PullRequest
8 голосов
/ 07 мая 2010

Мне нравится преобразовывать строку, например:

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

в двумерный массив, подобный этому

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

Я пытался использовать метод split(""), но по-прежнему нет решения: (

спасибо ..

Kai

1 Ответ

22 голосов
/ 07 мая 2010
    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]]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...