TextFieldParserのサンプルを作ってみた
仕事でCSVやらTXTやらのテキストファイルを扱うことが多いのでTextFieldParserメソッドのサンプルを作ってみた。
固定長の場合、FieldWidthsプロパティの文字幅はバイト単位ではなく文字数単位らしい。 使えない…
[参照の追加] で Microsoft.VisualBasic.dll の追加を忘れずに。
データ
"11111","AAAA""AA" "22222","BBBBBB " #"22222","BBBBBB "
ソース
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using Microsoft.VisualBasic.FileIO; namespace TextFieldParserTest { class Program { static void Main(string[] args) { List<Data> CsvData = new List<Data>(); string csvFileName = @"C:\tmp\test.csv"; // ファイル名 Encoding Encode = Encoding.GetEncoding("Shift_JIS"); // Encode指定 using (TextFieldParser Parser = new TextFieldParser(csvFileName, Encode)) { Parser.TextFieldType = FieldType.Delimited; // フィールド区切りタイプ Parser.Delimiters = new string[] { "," }; // 区切り文字 Parser.HasFieldsEnclosedInQuotes = true; // ダブルコーテーション区切り Parser.CommentTokens = new[] {"#"}; // レコード先頭のコメント文字 Parser.TrimWhiteSpace = true; // フィールドの前後スペースを削除 // データ読み込み while (!Parser.EndOfData) { string[] fields = Parser.ReadFields(); Data data = new Data(); data.F1 = fields[0]; data.F2 = fields[1]; CsvData.Add(data); } // Console出力 foreach (var n in CsvData) { Console.WriteLine(n.F1+" "+n.F2); } Console.ReadKey(); } } public class Data { public string F1 { get; set; } public string F2 { get; set; } } } }