在VB.Net中删除“不可见”控制字符

3

我目前正在使用VB.Net从文本文件中读取内容

Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText(file)

该文件包含多行文本,当我读取文本文件时,程序知道它们在不同的行上并相应地将它们打印出来。

然而,当我尝试将fileReader拆分为不同行的数组时,换行符似乎仍然存在,即使我使用Split(ControlChars.Cr)Split(ControlChars.NewLine)也是如此。它会成功地将其拆分成单独的行,但当我显示它时,它会“推”文本到下一行,就像换行符仍然存在一样...

有人知道发生了什么事情以及如何删除这些“隐形”的控制字符吗?

文本文件:

Test1
Test2
Test3
Test4

fileReader:

Test1
Test2
Test3
Test4

lines() 输出结果:

Test1

Test2

Test3

Test4

4个回答

5

在每一行上使用trim()函数,它会去除多余的空格。


2
System.IO.File类有一个ReadAllLines方法,可以返回一个字符串数组,每个元素代表一行文本。
如果这个方法也不起作用,我建议你检查具体是哪些字节导致了问题。在监视窗口中,你可以使用System.Text.Encoding.ASCII.GetBytes(sampleLine)来查看你正在处理的内容。
我假设你正在使用ASCII编码,如果不是,请将ASCII替换为正确的选项,并相应地修改文件读取方式以便根据该编码读取。

1

如上所述,使用Readalllines方法可以自动拆分。

你遇到的问题是PC ASCII文件通常使用回车和换行符进行拆分,仅拆分一个会留下另一个。你可以像上面提到的那样拆分和修剪,或者使用另一种基于字符串而不是字符的拆分方法。

dim s() as string = Split(fileReader ,vbCrLf)

修剪还将从数据中删除空格,这取决于您的情况,可能会对您造成问题。


0
最近遇到了类似的问题。Trim() 无法正常工作,因为在进行 split(或使用 File.ReadAllLines)之后,额外的行已经存在了。以下是对我有用的解决方法:
    Dim allText As String = System.IO.File.ReadAllText(filePath)
    allText = allText.Replace(Chr(13), "")
    Dim lines As String() = allText.Split(vbLf)

Chr(13)是控制字符,使用Split()或File.ReadAllLines会导致额外的换行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接