如何统计动态字符串中各单词出现次数并为每个单词生成计数变量
统计分号分隔字符串中各单词的出现次数
嘿,我来帮你搞定这个需求!你需要处理格式不固定的分号分隔字符串,统计每个单词的出现次数,还要给每个单词单独创建变量存储次数,最后输出清晰的统计结果。下面是具体的实现思路和代码(以C#为例,毕竟你给的代码是C#风格的):
核心实现步骤
- 先把字符串按分号分割成干净的单词数组,避免空字符串干扰
- 用字典先完成次数统计,这一步最灵活,不管字符串里有什么新单词都能自动适配
- 如果确实需要给每个单词创建单独变量,用动态类型就能实现这个需求
- 最后按你要的格式输出统计结果
完整代码示例
using System; using System.Collections.Generic; using System.Dynamic; class WordCountProgram { static void Main() { string common = "Blue;Red;Red;Green;Green;Green;Blue;Blue;Blue;Yellow"; // 1. 分割字符串,移除空条目(处理首尾或连续分号的情况) string[] words = common.Split(';', StringSplitOptions.RemoveEmptyEntries); // 2. 用字典统计每个单词的出现次数 Dictionary<string, int> countDictionary = new Dictionary<string, int>(); foreach (string word in words) { if (countDictionary.ContainsKey(word)) countDictionary[word]++; else countDictionary[word] = 1; } // 3. 为每个单词创建单独的动态变量(满足你要的变量存储需求) dynamic wordCounts = new ExpandoObject(); foreach (var keyValuePair in countDictionary) { ((IDictionary<string, object>)wordCounts)[keyValuePair.Key] = keyValuePair.Value; } // 4. 按要求格式输出结果 Console.WriteLine("统计结果:"); foreach (var keyValuePair in countDictionary) { Console.Write($"{keyValuePair.Key}: {keyValuePair.Value} "); } // 也可以直接访问单独变量,比如: // Console.WriteLine("\nBlue的出现次数:" + wordCounts.Blue); // 输出4 } }
关键细节说明
- 分割字符串:用
StringSplitOptions.RemoveEmptyEntries参数很重要,能避免字符串首尾有分号或者出现连续分号时产生的空字符串,保证统计准确 - 字典统计:这是处理未知格式字符串的最优解,不需要提前知道有哪些单词,自动适配所有可能的内容
- 动态变量:用
ExpandoObject创建的动态变量wordCounts,可以直接通过单词名访问次数,比如wordCounts.Green就能得到3,完全满足你“每个单词一个变量”的需求 - 输出格式:遍历字典直接拼接输出,就能得到你想要的
Blue: 4 Red: 2 Green: 3 Yellow: 1这种格式
内容的提问来源于stack exchange,提问作者Kevin Mueller
相关产品推荐
相关产品推荐

