3

我目前正在使用 VB.Net 阅读文本文件

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

文件包含多行文本,当我读入文本文件时,它知道它们位于不同的行并相应地打印出来。

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

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

文本文件:

测试1
测试2 测试3
测试
4

文件阅读器:

测试1
测试2 测试3
测试
4

行()打印输出

测试1

测试2 测试3

测试

4

4

4 回答 4

5

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

于 2011-06-09T21:04:44.767 回答
2

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

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

我假设您使用的是 ASCII 编码,如果没有,您需要使用正确的选项换出 ASCII,然后也将您的文件读取修改为基于该编码读取。

于 2011-06-09T21:19:47.520 回答
1

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

您遇到的问题是 PC ASCII 文件通常用回车符和换行符分割,只分割一个会留下另一个。您可以如上所述拆分和修剪,或使用在字符串而不是字符上拆分的其他拆分。

暗淡 s() as string = Split(fileReader ,vbCrLf)

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

于 2011-06-09T22:08:12.320 回答
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) 是使用 Split() 或 File.ReadAllLines 产生额外行的 Control-M 字符。

于 2013-05-21T16:46:20.643 回答