class CounterDict<TKey>
{
public Dictionary<TKey, int> _dict = new Dictionary<TKey, int>();
public void Add(TKey key)
{
if(_dict.ContainsKey(key))
_dict[key]++;
else
{
_dict.Add(key, 1);
}
}
}
class Program
{
static void Main(string[] args)
{
string line = "The woods decay the woods decay and fall.";
CounterDict<string> freq = new CounterDict<string>();
foreach (string item in line.Split())
{
freq.Add(item.Trim().ToLower());
}
foreach (string key in freq._dict.Keys)
{
Console.WriteLine("{0}:{1}",key,freq._dict[key]);
}
}
}
我想计算一个字符串中所有单词的出现次数。
我觉得上面的代码将是缓慢的,在这个任务,因为(考虑添加功能):如何计算文本文档中所有单词的频率?
if(_dict.ContainsKey(key))
_dict[key]++;
else
{
_dict.Add(key, 1);
}
而且,保持_dict__
public
好的做法呢? (我不认为是这样。)
我应该如何修改或完全改变它来完成这项工作?
但是,“非字符串”键呢?我计划将此扩展到其他关键类型。 – 2009-10-26 12:08:19
“或者还有非字符串的REGEX? :) – 2009-10-26 12:08:50
你是什么意思'非字符串'? '\ w +'表示'[a-zA-Z_0-9]'(或'从A到Z的字母,下划线和数字') – 2009-10-26 12:17:58