2017-12-20 4 views
0

の内側にあるCSVファイルを「」読み方:私はいくつかのCSVデータを持つデータ

"data1", "data2", "data2_1", "data3" 

私は、データを読み取るためにcsvHelperを使用しています。

セパレータ','を使用してデータを読み取り、分割すると、4つのレコードが取得されます。

"data1", 
"data2", 
"data2_1", 
"data3" 

しかし、私は3列以下

"data1", 
"data2, data2_1", 
"data3" 

を持っているように私には3つのレコードをしたい私は

var config = new CsvConfiguration() { HasHeaderRecord = false }; 
var stream = File.OpenRead(FilePath); 
using (var csvReader = new CsvReader(new StreamReader(stream, Encoding.UTF8), config)) 
    { 
     while (csvReader.Read()) { 
     var parser = csvReader.Parser; 
     var rowRecors = parser.RawRecord; 
     var splitedData = rowRecors.Split(','); 
    } 
+0

でプロパティリストを参照してくださいコンストラクタ

var config = new CsvConfiguration() { HasHeaderRecord = false, Quote = '"' }; 

にこれを追加する必要があります。自分で分割すると、ツールを使用するのはなぜ邪魔でしょうか? – oerkelens

+0

あなたは、使用している正確なcsvヘルパーライブラリ(リンク)を教えてください。 CsvReaderはたくさんの一般的なものです – Steve

+0

[CSVファイルのコンマを扱う]の可能な複製(https://stackoverflow.com/questions/769621/dealing-with-commas-in-a-csv-file) – Sentry

答えて

0

をしようとしていますコードを手動で分割して、代わりにlibの機能

を使用しないでくださいです
// By header name 
var field = csv["HeaderName"]; 

    // Gets field by position returning string 
var field = csv.GetField(0); 



// Gets field by position returning int 
    var field = csv.GetField<int>(0); 

// Gets field by header name returning bool 
var field = csv.GetField<bool>("IsTrue"); 

// Gets field by header name returning object 
var field = csv.GetField(typeof(bool), "IsTrue"); 

Refer reading samples

1

あなたがこのライブラリを使用しているようだ:CsvHelper

あなたのファイルデータは、各フィールドは、いくつかのフィールドは、フィールド区切り(カンマを含めることができ正確な理由のために、二重引用符で囲まれている引用し meaninigです)。この場合、フィールドを引用符で囲む際に使用する文字列をライブラリに通知し、引用符のペアの中にフィールドセパレータが存在する場合は無視してください。

このライブラリは、すでに初期化しているConfigurationクラスを提供します。
は、あなたはただ、私はそれはそれがために何だ、 `CvsReader`と分割を行うには、その同類の上にいくつかの方法を探しますCsvHelper.Configuration

関連する問題