Посчитать количество вхождений каждого слова в текстовом файле

Одному из кандидатов на дожность программиста предложили решить задачу:
Написать программу на C#, подсчитывающую количество вхождений каждого слова в текстовом файле.
Его решение показывать не буду, у него нет большого опыта разработки на этом языке, но после того как мы обсудили его решение, он попросил мое решение. Вот оно. Кто напишет лучше?


using System;
using System.Collections.Generic;
using System.IO;
using System.Text;

class Program {
static void Main() {
SortedDictionary<string, int> words = new SortedDictionary<string, int>();
foreach (string word in WordIterator(Console.In)) {
int count;
words[word] = words.TryGetValue(word, out count) ? count + 1 : 1;
}
foreach (KeyValuePair<string, int> pair in words)
Console.WriteLine("{1,8} {0}", pair.Key, pair.Value);
}

static IEnumerable<string> WordIterator(TextReader sr) {
StringBuilder sb = new StringBuilder();
int ch;
while ((ch = sr.Read()) != -1) {
char n = char.ToLower((char)ch);
if (char.IsLetter(n))
sb.Append(n);
else if (sb.Length > 0) {
yield return sb.ToString();
sb.Length = 0;
}
}
}
}




Компилировать это надо командой (при условии сохранения в wc.cs):
csc wc.cs

Запускать так:
wc.exe < file.txt

Коментарі

Fl@mE 29 каже…
Как запустить в Visual Studio???
Unknown каже…
Надо создать проект консольного приложения, заменить в нем файл с исходниками на этот и запустить.

Популярні дописи з цього блогу

OAuth-аутентификация через ВКонтакте

Українська мова