1

私は正規表現でこの問題に悩まされています。

含むファイルから読み取った文字列があるとします。

first_name, Hello, "test Drive"

次に、区切り記号としてsplit使用します。,そして私は得る

myString[0] = "first_name";
myString[1] = "Hello";
myString[2] = "\"test Drive\"";

,私の問題は、システムが二重引用符で囲まれた文字列を読み取るときです

first_name, Hello, "test, Drive"

私は得る

myString[0] = "first_name";
myString[1] = "Hello";
myString[2] = "\"test"
myString[3] = "Drive\"";

私の質問

左右に存在し,ないという条件で区切り文字として使用して文字列を分割するにはどうすればよいですか..または、はるかに簡単な回避策がありますか?"

ありがとう。

4

2 に答える 2

2

CSVファイルで作業しているようです。これを行うために CSV ライブラリの 1 つを使用することを既に検討しましたか (opencsv や supercsv など)。

于 2013-09-05T06:13:50.223 に答える
0

分割したい場所までの明確な正規表現の制限がわかっている場合は、以下が機能します

        String test = "first_name, Hello, \"test, Drive\"";


        String[] tests = test.split(", ", 3);

        System.out.println("1  " + tests[0]);
        System.out.println("1  " + tests[1]);
        System.out.println("1  " + tests[2]);

 output :-
   1  first_name
   2  Hello
   3  "test,Drive"

制限がわからない場合、入力文字列は以下の形式にする必要があります。ここで、スペースなしで (,) のみを含むクォート内の文字列をフォーマットできる場合.. 1 つのコンマ (,) とスペース ( ) を含む他のテキスト区切り文字

String test = "first_name, Hello, \"test,Drive\"";


        String[] tests = test.split(", ");

        System.out.println("1  " + tests[0]);
        System.out.println("1  " + tests[1]);
        System.out.println("1  " + tests[2])

output :-
       1  first_name
       2  Hello
       3  "test,Drive"
于 2013-09-05T06:46:42.663 に答える