1

次の行を含むCSVファイルがあります。

SHIELA,ABIJAY,,,shiela@abijay.com,Shiela123,,43 123 STREET,,MEDFORD,MA ,2155,,,,617-874-4248,0,0,0,,,,,0,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20847, INAC,8101969,,,,,,,`

分割を使用して、値を配列に分割します

def fields = line.split(",")

私は得ています

[SHIELA, ABIJAY, , , shiela@abijay.com, Shiela123, , 43 BOWER STREET, , MEDFORD, MA , 2155, , , , 617-874-4248, 0, 0, 0, , , , , 0, 0, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 20847,  INAC, 8101969]

しかし、行では、8101969以降にいくつかのコンマがあります。その配列でもそのコンマを取得するにはどうすればよいですか?

4

3 に答える 3

4

この特定の問題を解決するには、次のようにします。

def fields = line.split(",", -1)

ただし、一般的に言えば、@npinti に同意します。OpenCSVなどの CSV ライブラリの使用を検討することをお勧めします。

于 2012-05-18T07:37:20.070 に答える
2

CSV ファイルを処理する必要がある場合は、 OpenCSV.splitなどのより堅牢なもの ( だけでなく) を使用することをお勧めします。

opencsv は、Java 用の非常に単純な csv (コンマ区切り値) パーサー ライブラリです。

非常に短いチュートリアルがここにあります。

于 2012-05-18T07:37:28.247 に答える
1

split については JavaDoc を参照してください。パラメーターが 1 つしかない場合、後続の空の文字列は破棄されます。正でない第 2 パラメーターがある場合、

パターンは可能な限り何度でも適用され、配列の長さは任意です。

したがって、問題は次を使用して解決されます。

def fields = line.split(",", -1) 
于 2012-05-18T07:41:00.853 に答える