2016-03-22 6 views
0

CSVファイルにいくつかの値を書いていますが、カンマを含む値は>のように一度>に分割されます。 a、b、cは1つの値で、1つのセルに表示されますが、3つのセルに表示されます。カンマ区切りでCSVで書込み中に値をエスケープする

これは、FileWriterを使用してcsvファイルにデータを書き込む方法です。もしnode.getLongName()が私にコンマを持つ値を与えるならば、値は内部カンマに従って分割されます。 誰でもこの仕事をし、価値の分割を避ける方法を教えてください。

+0

これらの中に通常このhttp://stackoverflow.com/questions/16103224/string-containing-comma-inputting-in-to-the-csv-file – RubioRic

+0

をお試しくださいあなたのcsvに別の区切り文字が必要な場合。投稿したコードのライブラリを使用しているのかどうかは分かりませんが、セパレータを変更する必要があります。通常は文字列とセミコロンをラップするために二重引用符を使用するか、値を区切るためにパイプを使うとトリックが行われ、 "a"、 "b"、 "a、b、c"または"a" | "b" | "a、b、c" – valepu

+1

フィールドを引用するのは一般的な解決策ですが、読者にはこの引用をサポートする必要があります。/csv/ – davidshen84

答えて

0

あなたはCSVファイルに書き込んでいますが、ソースファイルから分かれてはならない項目が分かります。そうする場合、そのフィールドのセパレータをコンマから '+'のような別のセパレータに変更し、CSVの他の要素を追加することができます。例として:

10/09/2016, cycling club,(sam+1000+oklahoma),(henry+ 1001+california),(bill+1002+NY) 

ここでは、括弧内には学生の詳細があります。彼らは前に分けられたコマンドでしたが、私はプラス記号に変更しました。

0

些細なタスクのために手でを操作することができているが、CSV formatはできるだけ早くあなたが区切り文字や改行のエスケープを処理する必要があるとして、注意が必要です。

すべてのコーナーケースで重いテストをしたいのでなければ、the one from apacheのようなよく知られているCSVライブラリに頼るのが最も良い方法です。

これはまだ単純です(カンマをエスケープする必要がある場合のみ)。一般的な使用方法は、空白や区切り文字を含むフィールドを引用することです。それはa,b,cが、"a,b,c"を書き込まないことを意味:

writer.append("\"" + node.getLongName()+ "\""); 
関連する問題