如何在List中添加唯一单词及其出现次数

时间:2015-04-10 01:55:35

标签: c# string streamreader

我正在尝试用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

2 个答案:

答案 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 []并计算一个单词在数组中的时间。