Недавно я сделал небольшое приложение для чтения текстового файла с текстами песен, а затем с помощью словаря вычисляю, сколько раз встречается каждое слово.Однако по какой-то причине я нахожу в выходных данных случаи, когда одно и то же слово встречается несколько раз со счетом 1 вместо того, чтобы быть добавленным к исходному счету слова.Код, который я использую, выглядит следующим образом:
StreamReader input = new StreamReader(path);
String[] contents = input.ReadToEnd()
.ToLower()
.Replace(",","")
.Replace("(","")
.Replace(")", "")
.Replace(".","")
.Split(' ');
input.Close();
var dict = new Dictionary<string, int>();
foreach (String word in contents)
{
if (dict.ContainsKey(word))
{
dict[word]++;
}else{
dict[word] = 1;
}
}
var ordered = from k in dict.Keys
orderby dict[k] descending
select k;
using (StreamWriter output = new StreamWriter("output.txt"))
{
foreach (String k in ordered)
{
output.WriteLine(String.Format("{0}: {1}", k, dict[k]));
}
output.Close();
timer.Stop();
}
Текстовый файл, который я ввожу, находится здесь: http://pastebin.com/xZBHkjGt (это тексты 15 лучших рэп-песен, если выЛюбопытно) Выходные данные можно найти здесь: http://pastebin.com/DftANNkE Быстрый Ctrl-F показывает, что «девушка» встречается в выходных данных как минимум 13 раз.Насколько я могу судить, это одно и то же слово, если только нет разницы в значениях ASCII.Да, там есть несколько примеров с нечетными символами вместо апострофа, но я буду беспокоиться об этом позже.Мой приоритет - выяснить, почему одно и то же слово учитывается 13 раз как разные слова.Почему это происходит, и как мне это исправить?Любая помощь очень ценится!