TextFieldParser
オブジェクトを使用すると、ログ ファイルやレガシ データベース情報など、テキストの区切り幅列として構造化された非常に大きなファイルを解析して処理できます。
TextFieldParser
を使用したテキスト ファイルの解析はテキスト ファイルの反復処理と似ていますが、テキストのフィールドを抽出する解析メソッドは、区切り文字列のトークン化に使用される文字列操作メソッドに似ています。
さまざまな種類のテキスト ファイルの解析
テキスト ファイルには、コンマやタブスペースなどの文字で区切られたさまざまな幅のフィールドが含まれる場合があります。 次の例のように、 TextFieldType
と区切り記号を定義します。この例では、 SetDelimiters
メソッドを使用してタブ区切りテキスト ファイルを定義します。
testReader.SetDelimiters(vbTab)
その他のテキスト ファイルには、固定されたフィールド幅が含まれる場合があります。 このような場合は、次の例のように、 TextFieldType
を FixedWidth
として定義し、各フィールドの幅を定義する必要があります。 この例では、 SetFieldWidths
メソッドを使用してテキストの列を定義します。最初の列の幅は 5 文字、2 番目は 10、3 番目は 11、4 番目は可変幅です。
testReader.SetFieldWidths(5, 10, 11, -1)
testReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
形式が定義されたら、 ReadFields
メソッドを使用してファイルをループ処理し、各行を順番に処理できます。
フィールドが指定した形式と一致しない場合は、 MalformedLineException 例外がスローされます。 このような例外がスローされると、 ErrorLine
プロパティと ErrorLineNumber
プロパティは、例外の原因となっているテキストとそのテキストの行番号を保持します。
複数の形式のファイルの解析
PeekChars
オブジェクトのTextFieldParser
メソッドを使用すると、各フィールドを読み取る前にチェックできます。これにより、フィールドに複数の形式を定義し、それに応じて対応することができます。 詳細については、「 方法: 複数の形式のテキスト ファイルから読み取る」を参照してください。
こちらも参照ください
.NET