【问题标题】:Remove "Invisible" Control Characters in VB.Net删除 VB.Net 中的“不可见”控制字符
【发布时间】:2011-09-12 01:19:39
【问题描述】:

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

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

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

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

有没有人知道发生了什么以及如何删除这些“不可见”的控制字符。

文本文件:

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

文件读取器:

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

lines() 打印输出

测试1

测试2

测试3

测试4

【问题讨论】:

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


    【解决方案1】:

    最近遇到了类似的问题。 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 字符。

    【讨论】:

      【解决方案2】:

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

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

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

      Trim 也会从数据中删除空格,具体取决于可能对您造成问题的情况。

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-10
            • 2011-07-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-17
            相关资源
            最近更新 更多