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