我的问题是我试图从文本框中取出一段文本 “花了一天”插入名牌“'#excited #happy #happy”
然后我想计算每个主题标签出现在主体中的次数,可以是任意长度的文本。
所以上面会返回这个
我打算使用字典,但我不确定如何实现搜索标签并添加到字典中。
这就是我到目前为止所做的一切
string body = txtBody.Text;
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach(char c in body)
{
}
感谢您的帮助
答案 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