1

この形式のファイルを読み取る必要があります。

(w,x,y,z),(w,x,y,z), ... ,(w,x,y,z);

すべて 1 行で。

//編集:

最終的には、次のようなファイルでもこれを行う必要があります。

(w,x,y,z_1 ... z_n),(w,x,y,z_1 ... z_n), ... ,(w,x,y,z_1 ... z_n);

したがって、過去 3 つのコンマを単に読み取るだけでは、それをカットすることはできません。

私の計画は、Scanner クラスを使用してファイル全体を文字列に読み取り、(w、x、y、z) 部分の配列に分割してから、それを実際の w、x、y、z に分割することです。最終的に、ファイル内のデータは、次のようなオブジェクトのリストになります。

public class DataBean {
    private String w, x, y, z;
    ...
}

ただし、これの正規表現を思い付くのに苦労しています。私は試した

String[] allSystems = scanner.nextLine ( ).split ( "),(" );

確かに、それは文字列を切り上げますが、それは最もエレガントな解決策ではないと感じています. 誰かがより良いアイデアを持っているなら、私は聞きたいです!

4

2 に答える 2

3

あなたが試すことができます:

String[] allSystems = scanner.nextLine ( ).split ( "(?<=\\)),(?<!\\()" );

あなたが得る(w,x,y,z)、、(w,x,y,z)(w,x,y,z);

次に、 get wxy、 に対して、次のzことができます。

String system = "(w,x,y,z);";

String[] data = system.replaceAll("\\(|\\);?", "").split(",");
于 2013-10-17T19:36:44.073 に答える
1

を使用するline.split("(^\\(|\\),\\(|\\);|,)")と、配列内の独自の要素として w、x、y、および z のそれぞれを持つ String 配列が得られます。配列の最初の項目は空の文字列になりますが、インデックス 1 から開始すると、これを使用して DataBean オブジェクトを簡単に作成できます。

String[] data = line.split("(^\\(|\\),\\(|\\);|,)");

List<DataBean> dataBeans = new ArrayList<DataBean>();
for (int i = 1; i < data.length; i += 4) {
    dataBeans.add(new DataBean(data[i], data[i+1], data[i+2], data[i+3]);
}
于 2013-10-17T19:43:55.697 に答える