ある関数(splitCSV)に渡された文字列を配列に分解して列ごとに表示してください。 渡される文字列は、CSVデータの1レコードが設定されているとします。 使用するデータはK3形式が元になっている仕様で エクセルが出力しているような形式です。 書式には次のような特徴があります。 1. 各レコードは「改行」によって区切られている。 2. 各列は「,」によって区切られている。 3. 列のデータは「"」によって囲んでも良い。 4. 列に「,」「改行」「"」いずれかを含む場合「"」で 囲わなければならない。 5. 列データに「"」を含める場合「""」とする。 本来、改行コードはCRLFですが今回は特に指定しません。 次の入力があった場合 "aaa","b bb","ccc",zzz,"y""Y""y",xxx 出力は 1 => aaa 2 => b bb 3 => ccc 4 => zzz 5 => y"Y"y 6 => xxx となります。 Test.csvの中身 AAA,BBB,CCC,ZZZ,yYy,XXX "aaa","b bb","ccc",zzz,"y""Y""y",xxx 111,222,333,444,555,666
using System; using Microsoft.VisualBasic.FileIO; class Program { static void Main() { string CSVPath = @"D:\CSharp\TextFieldParser\Test.csv"; var parser = new TextFieldParser(CSVPath); parser.SetDelimiters(","); while (!parser.EndOfData) { int I = 0; foreach (string each in parser.ReadFields()) { Console.WriteLine("{0} => {1}", I++, each); } } } }
0 => AAA 1 => BBB 2 => CCC 3 => ZZZ 4 => yYy 5 => XXX 0 => aaa 1 => b bb 2 => ccc 3 => zzz 4 => y"Y"y 5 => xxx 0 => 111 1 => 222 2 => 333 3 => 444 4 => 555 5 => 666
2-4 TextFieldParserクラスを使うと便利です。