我正在创建一个计数器,用于计算每个字符在字符串中出现的次数,然后将结果打印到控制台。
让我们使用以下示例字符串:
string myString = "The pen is mightier."
我希望结果是
T : 2
h : 2
e : 3
: 2
p : 1
n : 1
i : 3
s : 1
m : 1
g : 1
r : 1
. : 1
我已经将字符串转换为字符数组。
char[] charactersInString = myString.ToCharArray();
我创建了一个字典,用于存储字母和计数。
Dictionary<char, int> letters = new Dictionary<char, int>();
我遍历characterInString
数组中的每个字母,并且不确定在字典中不包含键时如何初始化和添加新对,或者仅在字典中包含键时如何更新值?
答案 0 :(得分:1)
使用LINQ非常简单。
var dictionary = myString.GroupBy( x => x ).ToDictionary( x => x.Key, x => x.Count );
如果您希望将小写字母和大写字母视为相同,请事先将字符串强制转换为大写字母:
var dictionary = myString.ToUpper().GroupBy( x => x ).ToDictionary( x => x.Key, x => x.Count );
如果要以传统方式进行操作,则需要循环。
var dictionary = new Dictionary<char,int>();
foreach (var character in myString.ToUpper())
{
if (dictionary.ContainsKey(character))
{
dictionary[character]++;
}
else
{
dictionary.Add(character, 1);
}
}