.NET 4.x Дан текстовый файл, подсчитать сколько раз встречается каждое слово - C#
Формулировка задачи:
Добрый вечер.
Решил посчитать количество повторений слов в файле.
Пример:
мама мыла раму, раму мыла мама.
Должно вывести на экран:
слово мама повторяется - 2 раза
слово мыла повторяется - 2 раза
слово раму повторяется - 2 раза
Программа подсчет проводит, но хотелось бы узнать как это сделать проще.
Спасибо.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Считаем количество слов в тексте.\n");
FileStream moiFail = new FileStream("podschet.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
StreamReader chitau = new StreamReader(moiFail);
string stroka = chitau.ReadToEnd();
Console.WriteLine(stroka);
string[] strokaArray = stroka.Split(new char[] { '\n', '\r', ',', ' ' },
StringSplitOptions.RemoveEmptyEntries);
IEnumerable<string> distinctStr = strokaArray.Distinct();
foreach(string str in distinctStr)
{
int x = 0;
for (int i = 0; i < strokaArray.Length; i++)
{
if(str == strokaArray[i]) x++;
if(i == strokaArray.LongLength-1)
Console.WriteLine("Слово {0} встречается {1} раз.", str, x);
}
}
Console.ReadLine();
}
}Решение задачи: «.NET 4.x Дан текстовый файл, подсчитать сколько раз встречается каждое слово»
textual
Листинг программы
Console.WriteLine("Считаем количество слов в тексте.\n");
string stroka = File.ReadAllText("podschet.txt");
Console.WriteLine(stroka);
string[] strokaArray = stroka.Split(new char[] { '\n', '\r', ',', ' ' },
StringSplitOptions.RemoveEmptyEntries);
var groups = strokaArray.GroupBy(n => n); //n => n.ToLower() для игнорирования регистра
foreach (var item in groups)
{
Console.WriteLine("Слово {0} встречается {1} раз.", item.Key, item.Count());
}
Console.ReadLine();