代码之家  ›  专栏  ›  技术社区  ›  SyncMaster

在C语言中使用file.readalllines时,如何去掉开头的特殊字符#

  •  0
  • SyncMaster  · 技术社区  · 15 年前

    我试过 string[] file = File.ReadAllLines(file_name) 读取Word文件。

    在调试模式下,我发现字符串数组文件的前几个参数的值如下

    "��ࡱ�0\0\0\0>\0\0��\t\0\0\0\0\0" . 我怎样才能摆脱这个。

    在某些文件中,文件[]的前3个参数用这些字符填充,而对于少数文件,只有第一个参数用这些不可恢复的字符填充。

    问题是什么?我如何才能摆脱这个问题?但我的Word文件开头甚至没有空行。

    4 回复  |  直到 15 年前
        1
  •  3
  •   Yuriy Faktorovich    15 年前

    问题是您没有用正确的编码打开文件。 Here 是从C打开和创建Word文档的指南。

        2
  •  2
  •   Darin Dimitrov    15 年前

    File.ReadAllLines 用于文本文件。Word文件是 文本文件。要读取Word文件,您可能需要一个库。

        3
  •  1
  •   Kane    15 年前

    如果您使用的是.NET 3.5,那么我建议您使用LINQ WHERE子句只返回您感兴趣的行。

    string[] file = File.ReadAllLines(file_name).Where(line => !line.StartsWith("��")).ToArray();
    

    您还可以使用某种形式的正则表达式,而不是 line.StartsWith() 方法。

    注: 如果您正在阅读Microsoft Office Word文件,我建议您使用COM Interop或第三方库来阅读MS Word文档(您会发现这比自己解析该文件容易得多)。

        4
  •  1
  •   Oded    15 年前

    Word文件不是简单的文本文件,因此将嵌入额外的二进制信息。

    如果要正确提取文本,则应使用将阅读Word文档的库,而不是 File.ReadAllLines .

    这里有一个 couple 这样的 libraries .