我正在尝试用C#编写一个程序来读取文件中的文本,并计算每个唯一单词出现的次数,并跟踪文件中的单词。例如,在字符串"这是我的文字,这就是"我会得到:
这 - 2 是 - 2 我 - 1 文字 - 1 和 - 1 它 - 1
有没有简单的方法来实现这一目标?我是C#的新手,我没有看到太多我完全理解的东西。
编辑:
所以这是我尝试过的代码。似乎我返回的列表只是反复包含文件中的最后一个单词,并且计数已关闭。即使我试图摆脱大都会和时期,他们仍然会出现。
public override List<WordEntry> GetWordCount()
{
List<WordEntry> words = new List<WordEntry>();
WordEntry wordEntry = new WordEntry();
string[] tokens = null;
string line, temp;
int count = 0, index = 0;
while ((line = input.ReadLine()) != null)
{
temp = Regex.Replace(line, @"\([0-9].\)", "");
temp.ToLower();
tokens = temp.Split(null);
for (int i = 0; i < tokens.Length; i++)
{
wordEntry.Word = tokens[i];
foreach (var word in tokens)
{
if (word == tokens[i])
count++;
}//end foreach
wordEntry.WordCount = count;
words.Add(wordEntry);
}//end for
}//end while
return words;
}//end GetWordCount
答案 0 :(得分:1)
您可以使用分组,只需分割您的模板并逐字分组:
var template = "this is my text and this is it";
var result = template.Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries)
.GroupBy(grp => grp)
.Select(grp => new {Word = grp.Key , Count= grp.Count()})
.ToList();
答案 1 :(得分:0)
第一步是查找StreamReader类...将使用StreamReader类读取文本文件...然后在获得此文件后将文本文件的每一行拆分为String [] ... far ..你可以通过foreach循环遍历String []并计算一个单词在数组中的时间。