В данной теме мы решили объединить две предыдущие статьи — это Программа, которая выводит на экран содержимое файла и Как подсчитать количество слов в тексте С#, и создать программу на языке C#, которая вела бы подсчёт слов в файле.
Перво-напрево не забываем про директиву
1 |
using System.IO; |
В данной директиве находится класс, описывающий работу с файлами. Без него у нас ничего не заработает.
Сам код программы будет выглядеть вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace wordscount { class Program { static void Main(string[] args) { string s = "" ; string[] textMass; StreamReader sr = new StreamReader("E:\\textfile.txt"); while (sr.EndOfStream != true) { s += sr.ReadLine(); } textMass = s.Split(' '); Console.WriteLine("Количество слов:"); Console.WriteLine(textMass.Length); sr.Close(); Console.ReadLine(); } } } |
Итак, сначала мы объявляем строковую переменную s, в которую будет считываться весь текст из файла. Мы присвоили данной переменной пустое значение.
Далее был объявлен массив строк textMass, который будет считывать каждое слово из строки s, одно слово — это один элемент массива. Забегая вперед, скажем, что слова (а значит и элементы массива) мы будет отделять друг от друга пробелом при помощи метода Split (22 строка). То есть, кусок строки между двумя пробелами в нашем понимании — это одно слово (путь даже с примкнувшими к нему знаками препинания), а значит, и один элемент массива. После этого нам будет очень легко посчитать количество всех элементов — это и будет количество слов в тексте.
Так вот, после инициализации переменных мы инициализируем экземпляр класса StreamReader, который и отвечает за чтение файлов. Назовём этот экземпляр sr и укажем в скобках путь, по которому лежит необходимый нам файл. Наш файл находится на диске E и называется textfile.txt
Далее идёт цикл, в процессе которого мы и присваиваем переменной s весь текст из нашего файла (читая его построчно). Пока конец файла sr не будет достигнут, мы присваиваем переменной s его содержимое.
После того, как все данные считаны в s, массив строк начнёт делить содержимое данной переменной по пробелам, как мы описали чуть выше.
Всё, что нам в итоге остаётся — это посчитать количество элементов textMass(строка 24). Это и будет искомое количество слов в файле.
Также нам надо обязательно не забыть закрыть файл в любом месте кода, когда файл уже перестал пригождаться.
Результаты нашей программы, которая находит количество слов в файле C# таковы:
Проверим в Microsoft Office Word:
Количество слов совпадает.
Исходный код данной программы можно скачать ниже:
Скачать исходникПоделиться в соц. сетях:
У вас числа (пример: «3287429384»), будут считаться за слово. решение не доработано.
В данной постановке задачи словом считается любой набор символов, отделенный пробелом. Так что все правильно.
Программа подсчитывает количество пробелов, а не слова. Если строка будет состоять из 10 пробелов, то программа подсчитает 10 слов.
В задаче подразумевается, что исходный текст содержит слова и слова разделяются пробелами.
Спасибо за то, что делитесь опытом!
p.s. Этот код считает кол-во только последней строки в файле (то-есть последний абзац), наверное, вместо
s = sr.ReadLine();
имелось ввиду
s += sr.ReadLine();
чтобы в s каждый раз добавлялась следующая строка до конца файла.
Да, спасибо! Обновил код в статье.