2016-09-19 8 views
0

私は、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がこれらの終了スペースを削除するのかです。そして、もし私が必要ならばどうすればそれらを読むことができますか?

+1

私はこの動作に非常に驚きました。私にとって少なくともデフォルトでは、StreamReader.ReadLineはこれをしません。あなたのコードトリミングに何か他のものがないと確信していますか?小さなコードサンプルで動作を再現できますか?使用している.Netバージョンを確認できますか? – tolanj

答えて

0

あなたは簡単にこの

Imports System.IO 

Module Module1 

    Sub Main() 
     Dim sr As StreamReader = New StreamReader("SampleTextFile.txt") 
     Dim text As String = sr.ReadToEnd 

     Console.WriteLine("Original text") 
     Console.WriteLine(text) 
     Console.WriteLine() 

     Console.WriteLine("White-spaces as .") 
     Console.WriteLine(text.Replace(" ", ".")) 
     Console.WriteLine() 

     Console.ReadKey() 
    End Sub 

End Module 

と、この出力

になります。この

Some text with 2 white-spaces at the end 
Some other text with one white-space at the end 
No whit-espace at the end 
Next line will be made of white-spaces 

The EN 

として対応SampleTextFile.txtのようなサンプルプログラムで見ることができ、ホワイトスペースをトリムしませんStreamReader

Original text 
Some text with 2 white-spaces at the end 
Some other text with one white-space at the end 
No whit-espace at the end 
Next line will be made of white-spaces 

The END 

White-spaces as . 
Some.text.with.2.white-spaces.at.the.end.. 
Some.other.text.with.one.white-space.at.the.end. 
No.whit-espace.at.the.end 
Next.line.will.be.made.of.white-spaces 
......... 
The.END 

あなたが自分で弦をトリミングするかもしれないグラム。

+0

あなたは正しいです、より早い点がそれをトリミングしました。ありがとう! – crayfin

+0

聞いてよかったです - 答えを(緑のチェックマークで)受け入れてください - thx – DAXaholic

関連する問題