次の方法で共有


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 プロパティは、例外の原因となっているテキストとそのテキストの行番号を保持します。

複数の形式のファイルの解析

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

こちらも参照ください