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

时间:2011-06-09 20:59:39

标签: vb.net visual-studio-2008 file-io control-characters

我目前正在使用

在VB.Net中的文本文件中阅读
Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText(file)

文件包含几行文字,当我在文本文件中读取时,它知道它们在不同的行上并相应地打印出来。

但是,当我尝试将fileReader拆分为不同行的数组时,即使我使用Split(ControlChars.Cr)Split(ControlChars.NewLine),换行符也会保留在那里。它会成功地将它分成单独的行,但是当我显示它时,它会将文本“推”到一行,就像换行仍在那里......

有没有人对正在发生的事情以及如何删除这些“看不见的”控制字符有任何想法。

文字档案:

测试1
Test2的
TEST3
TEST4

的FileReader:

测试1
Test2的
TEST3
TEST4

lines()打印输出

测试1

Test2的

TEST3

TEST4

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

System.IO.File类有一个ReadAllLines方法,它实际上会返回一个字符串数组,每行一个。

如果该方法不起作用,我会仔细检查导致问题的字节。在监视窗口中,您可以执行System.Text.Encoding.ASCII.GetBytes(sampleLine)并准确检查您正在使用的内容。

我假设您正在使用ASCII编码,否则,您需要使用正确的选项替换ASCII,然后根据该编码修改您的文件读取。

答案 2 :(得分:1)

如前所述,使用Readalllines方法自动拆分。

您遇到的问题是PC ASCII文件通常用回车符和新行分开,只拆分一行就会离开另一行。您可以按照提到的方式进行拆分和修剪,或者使用拆分字符串而不是字符的其他拆分。

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

修剪也会删除数据中的空格,具体取决于您可能遇到的问题。

答案 3 :(得分:0)

最近遇到了类似的问题。 Trim()不起作用,因为在执行拆分(或使用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)是Control-M字符,它使用Split()或File.ReadAllLines产生额外的行。