посчитать слова в текстовом файле
Я считаю слова в текстовом файле и сравниваю результаты с Вордом и онлайн сервисами. Результаты у нас почти равны, но где-то количество слов в моей программе больше на 1000, где-то на 2, в зависимости от текста. Вот код моей программы.
string localText = System.IO.File.ReadAllText(fils[i], Encoding.UTF8);
int wordCount = 0;
string[] words = localText.Split(new char[] { ' ', '\t', '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
wordCount = words.Length;
fils[i] - папка файлов
Ответы (1 шт):
Следующий код должен правильно посчитать количество слов в файле txt формата:
using System.Text.RegularExpressions;
static void Main(string[] args)
{
string localText = System.IO.File.ReadAllText(fils[i], Encoding.UTF8);
MatchCollection words = Regex.Matches(localText, @"\b[\w-]+\b");
int wordCount = words.Count;
Console.WriteLine(wordCount);
}
Однако c Word файлами возникнет проблема. Проблема в том, что C# неправильно считывает данные из Word документов, методами класса File. Попробуйте ввести следующий код в свою программу и вы сами увидите, как C# записывает эти данные:
foreach(string str in words)
{
Console.Write(str);
}
Примерно, в следующим формате будет записан весь текст:
►q????B0?0↕?O"7?D??iB??????n?◄cD?oTM?TO?S?$?3?;??;t??♂?w^??sw♦?3???♣9_1??!uc?7A?↕??jm?j[?→♠z?☺?+♣☻?6H?r??k?#^$?L??8∟T?♠'!??I?`?↔▲?????C??♂b↑???◄?Y????u'?_?r?↓L6☺0#?O?S
Для того, чтобы C# мог правильно работать с файлами Word - нужно пользоваться такими библиотеками как:
- Либо Microsoft.Office.Interop.Word
- Либо DocumentFormat.OpenXml.Packaging и DocumentFormat.OpenXml.Wordprocessing.
Подробнее об этой теме, вы можете прочитать в ответах под следующим вопросом: https://stackoverflow.com/questions/37072832/how-to-read-or-copy-text-from-docx-odt-doc-files