VB .Net Streamreader - 在文本文件中的换行符之前修剪空格

时间:2016-09-19 12:22:24

标签: .net vb.net streamreader trim

我通过循环读取并使用Streamreader读取行来解析平面文件。

一切都运作良好但是在每个记录末尾的字段变为可选的情况下,需求发生了变化。我们根据定义验证每一行的长度,以确定是否应该将该文件挂起为格式不正确。

这导致发现Streamreader.ReadLine将修剪最后一个字符之后和换行符之前的任何尾随空格。

考虑以下示例,将数字替换为空格:

BOB JONES 12345 \ n BOB JONES \ n

流读取器将同时使用ReadLine和ReadToEnd存储区忽略这些空格。这是内存中的结果:

的Readline:

“BOB JONES 12345” “BOB JONES”

ReadToEnd的:

“BOB JONES 12345”& vbrclf& “鲍勃琼斯”

与Readblock相同,然后将缓冲区结果复制到字符串中。

我将采用不同的方法来验证记录的长度,因为结束日期字段是可选的,但我的问题是为什么Streamreader会丢弃那些结束空格?如果需要,我怎么读它们?

1 个答案:

答案 0 :(得分:0)

StreamReader不会修剪白色空格,您可以使用这样的示例程序轻松查看

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

和相应的SampleTextFile.txt作为此

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

将导致此输出

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

所以你可能想再次检查你的程序,你可以自己修剪字符串。