-1

この質問は、toString() の最後のセパレーターを削除する方法からの続きです。

解析する必要がある私の文字列は次のとおりです。

719.0|501.0|-75.0,501.0|508.0|-62.0,-75.0|-62.0|10.0#-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0,-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0,0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0

それらを2つの文字列配列で取得する方法は?

String [][] key = 719.0 501.0   -75.0   
                  501.0 508.0   -62.0   
                  -75.0 -62.0   10.0

String [][] value = -19.0   -19.0   -19.0   -19.0   -19.0   -19.0   -19.0   -19.0   -19.0   -19.0   
                    -20.0   -20.0   -20.0   -20.0   -20.0   -20.0   -20.0   -20.0   -20.0   -20.0   
                     0.0    0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

問題は、行と列の数がわからない可能性があることです。しかし、確かにそのような行列は 2 つしかありません。

何か案は?

4

2 に答える 2

1

それを試してみてください。ただし、ここでは、行に同じ数の要素があると想定しています。したがって、1 つの行に 5 つの列があり、別の行に 3 つの列があるということはありません。

public class StringToArraySandBox {

        protected void doShow(String text) {

            for (String array : text.split("#")) {
                String[][] array1 = doParsing(array);

                for (int i = 0; i < array1.length; i++) {
                    for (int y = 0; y < array1[i].length; y++) {
                        System.out.print(array1[i][y]);
                        System.out.print(" ");
                    }
                    System.out.println();
                }

            }
        }

        protected String[][] doParsing(String text) {

            String[][] result = null;

            String[] rows = text.split(",");
            int rowIndex = 0;
            for (String row : rows) {
                String[] columns = row.split("\\|");

                if (result == null)
                    result = new String[rows.length][columns.length];

                int columnIndex = 0;
                for (String column : columns) {
                    result[rowIndex][columnIndex] = column;

                    columnIndex++;
                }

                rowIndex++;
            }

            return result;
        }

        public static void main(String[] args) {
            String target = "719.0|501.0|-75.0,501.0|508.0|-62.0,-75.0|-62.0|10.0#-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0|-19.0,-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0|-20.0,0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0|0.0";
            new StringToArraySandBox().doShow(target);
        }

    }
于 2013-11-05T09:26:28.700 に答える
1

「#」で文字列を分割し、2 つの結果文字列を別々に解析するのはどうですか?

于 2013-11-05T08:40:27.277 に答える