使用Dictionary来计算出现次数

时间:2014-11-25 01:05:12

标签: c# dictionary

我的问题是我试图从文本框中取出一段文本 “花了一天”插入名牌“'#excited #happy #happy”

然后我想计算每个主题标签出现在主体中的次数,可以是任意长度的文本。

所以上面会返回这个

兴奋= 1

happy = 2

我打算使用字典,但我不确定如何实现搜索标签并添加到字典中。

这就是我到目前为止所做的一切

 string body = txtBody.Text;

        Dictionary<string, string> dic = new Dictionary<string, string>();
        foreach(char c in body)
        {

        }

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

这将在一个字符串形式的字符串中找到任何主题标签,后跟一个或多个非空白字符,并创建它们与其计数的字典。

你的意思是Dictionary<string, int>真的,不是吗?

var input = "Spent the day with \"insert famous name\" '#excited #happy #happy";
Dictionary<string, int> dic = 
  Regex
    .Matches(input, @"(?<=\#)\S+")
    .Cast<Match>()
    .Select(m => m.Value)
    .GroupBy(s => s)
    .ToDictionary(g => g.Key, g => g.Count());

答案 1 :(得分:2)

这可以通过几种LINQ方法实现:

var text = "Spent the day with <insert famous name> #excited #happy #happy";
var hashtags = text.Split(new[] { ' ' })
    .Where(word => word.StartsWith("#"))
    .GroupBy(hashtag => hashtag)
    .ToDictionary(group => group.Key, group => group.Count());

Console.WriteLine(string.Join("; ", hashtags.Select(kvp => kvp.Key + ": " + kvp.Value)));

这将打印

#excited: 1; #happy: 2