我通过循环读取并使用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会丢弃那些结束空格?如果需要,我怎么读它们?
答案 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
所以你可能想再次检查你的程序,你可以自己修剪字符串。