私は、Streamreaderを使って行をループしたり読み込んだりして、フラットファイルで解析しています。VB .Net Streamreader - テキストファイルの改行の前にスペースをトリミングする
すべてがうまくいきますが、各レコードの末尾のフィールドがオプションになったところで要件が変更されました。各行の長さを定義に対して検証して、そのファイルを間違った形式で一時停止する必要があるかどうかを判断します。
これは、Streamreader.ReadLineが、最後の文字の後で改行の前のスペースをトリミングすることにつながります。 12345 \ N BOB JONES \ n
のStreamReaderは、readlineおよびReadToEndストアの両方でこれらのスペースを無視する
BOB JONES:
は空白で置き換え番号の次の例を考えます。ここでの結果は、メモリ内にある:
のReadline:
"BOB JONES 12345" "BOB JONES"
ReadToEnd:
"BOB JONES 12345" & vbrclf & "ボブ・ジョーンズ"
Readblockを同じように扱い、バッファ結果を文字列にコピーします。
終了日フィールドはオプションであるため、レコードの長さを検証する別のアプローチをとるでしょうが、私の質問は、なぜStreamreaderがこれらの終了スペースを削除するのかです。そして、もし私が必要ならばどうすればそれらを読むことができますか?
私はこの動作に非常に驚きました。私にとって少なくともデフォルトでは、StreamReader.ReadLineはこれをしません。あなたのコードトリミングに何か他のものがないと確信していますか?小さなコードサンプルで動作を再現できますか?使用している.Netバージョンを確認できますか? – tolanj