Как избавиться от специальных символов в начале, используя File.ReadAllLines в C # - PullRequest
0 голосов
/ 25 января 2010

Я пытался string[] file = File.ReadAllLines(file_name) прочитать файл слова.

В режиме отладки я обнаружил, что первые несколько аргументов файла строкового массива имеют значения типа

"��ࡱ�0\0\0\0>\0\0��\t\0\0\0\0\0". Как я могу избавиться от этого.

В некоторых файлах первые 3 аргумента файла [] заполняются ими, в то время как для нескольких файлов только первый аргумент заполняется этими нереализуемыми символами.

В чем проблема и как мне от этого избавиться.? Но мой файл слов даже не имеет пустой строки в начале.

Ответы [ 4 ]

3 голосов
/ 25 января 2010

Проблема в том, что вы не открываете файл с правильной кодировкой. Здесь - руководство по открытию и созданию документов Word из C #.

2 голосов
/ 25 января 2010

File.ReadAllLines предназначен для текстовых файлов. Файлы Word - это , а не текстовые файлы. Для чтения файлов Word может потребоваться библиотека.

1 голос
/ 25 января 2010

Файлы Word не являются простыми текстовыми файлами, поэтому в них будет включена дополнительная двоичная информация.

Вы должны использовать библиотеку, которая будет читать текстовые документы, если вы хотите извлечь текст правильно, вместо File.ReadAllLines.

Вот пара таких библиотек .

1 голос
/ 25 января 2010

Если вы используете .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 (это будет гораздо проще, чем пытаться разбери файл сам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...