TextFieldParser オブジェクトによるテキスト ファイルの解析 (Visual Basic)

TextFieldParser オブジェクトを使用すると、ログ ファイルやレガシ データベース情報など、区切り文字や幅に応じて複数列に区切られたテキストとして構造化されている巨大なファイルを解析および処理できます。 テキスト ファイルを TextFieldParser で解析するのは、テキスト ファイルを反復処理するのと同様です。解析メソッドでテキストのフィールドを抽出するのは、区切り文字の付いた文字列を文字列操作メソッドでトークン化するのと同様です。

さまざまな種類のテキスト ファイルの解析

テキスト ファイルは、コンマやタブ空白などの文字で可変幅のフィールドに区切られている場合があります。 次の例のように、TextFieldType および区切り記号を定義します。この例では、SetDelimiters メソッドを使用して、タブ区切りのテキスト ファイルを定義しています。

testReader.SetDelimiters(vbTab)

また、テキスト ファイルによっては、固定幅のフィールドを持つ場合もあります。 その場合には、次の例のように、TextFieldTypeFixedWidth と定義して、各フィールドの幅を定義する必要があります。 この例では、SetFieldWidths メソッドを使用して、テキストの列を定義しています。最初の列は幅が 5 文字、2 番目の列は 10 文字、3 番目の列は 11 文字、4 番目の列は可変幅です。

testReader.SetFieldWidths(5, 10, 11, -1)
testReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth

書式を定義したら、ReadFields メソッドを使用して各行を順番に処理して、ファイルに対するループ処理を実行します。

フィールドが指定の書式に一致しない場合には、MalformedLineException 例外がスローされます。 この例外がスローされた場合、ErrorLine プロパティと ErrorLineNumber プロパティに、例外の原因になったテキストと、そのテキストの行番号が保持されます。

複数の書式を持つファイルの解析

TextFieldParser オブジェクトの PeekChars メソッドを使用すると、各フィールドを読み取る前にチェックできます。これにより、フィールドに対して複数の書式を定義して、適切に対応できます。 詳細については、「方法: 複数の書式を持つテキスト ファイルを読み取る」を参照してください。

関連項目