C# 统计字符出现次数

有如下字符串:【”患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?” 患者:“七十五岁。” 大夫:“二十岁咳嗽吗”患者:“不咳嗽。” 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。” 大夫:“那现在不咳嗽,还要等到什么时咳嗽?””】。需求:
①请统计出该字符中“咳嗽”二字的出现次数,以及每次“咳嗽”出现的索引位置。
②扩展(*):统计出每个字符的出现次数。

IndexOf方法, // 搜索如果不存在,返回 -1。注意看提示重载。用它的重载方法(见下面代码),返回索引位置。

mLastIndexOf // 最后出现的索引位置。 判断,当 IndexOF 和 LastIndexOf 相等的时候,可以确定这个字符串只出现了一次。

Dictionary<char, int>统计字符出现次数。

1
2
3
4
5
6
7
8
9
10
string msg = "患者:“大夫,我咳嗽得很重。”     大夫:“你多大年记?”     患者:“七十五岁。”     大夫:“二十岁咳嗽吗”患者:“不咳嗽。”     大夫:“四十岁时咳嗽吗?”     患者:“也不咳嗽。”     大夫:“那现在不咳嗽,还要等到什么时咳嗽?”";
int count = 0;
int index = 0;

while ((index = msg.IndexOf("咳嗽", index)) != -1) {
count++;
Console.WriteLine("\"咳嗽\"在{0}索引中出现第{1}次。", index, count);
index = index + "咳嗽".Length;
}
Console.ReadKey();

输出:

1
2
3
4
5
6
7
"咳嗽"在8索引中出现第1次。
"咳嗽"在58索引中出现第2次。
"咳嗽"在67索引中出现第3次。
"咳嗽"在84索引中出现第4次。
"咳嗽"在100索引中出现第5次。
"咳嗽"在117索引中出现第6次。
"咳嗽"在127索引中出现第7次。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
string msg = "患者:“大夫,我咳嗽得很重。”     大夫:“你多大年记?”     患者:“七十五岁。”     大夫:“二十岁咳嗽吗”患者:“不咳嗽。”     大夫:“四十岁时咳嗽吗?”     患者:“也不咳嗽。”     大夫:“那现在不咳嗽,还要等到什么时咳嗽?”";

Dictionary<char, int> dict = new Dictionary<char, int>();
for (int i = 0; i < msg.Length; i++) {
if(!dict.ContainsKey(msg[i])) {
dict.Add(msg[i], 1);
}
else {
dict[msg[i]]++;
}
}

foreach(KeyValuePair<char, int> item in dict) {
Console.WriteLine("字符\"{0}\"出现了{1}次。", item.Key, item.Value);
}
Console.ReadKey();

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
字符"患"出现了4次。
字符"者"出现了4次。
字符":"出现了8次。
字符"“"出现了8次。
字符"大"出现了6次。
字符"夫"出现了5次。
字符","出现了2次。
字符"我"出现了1次。
字符"咳"出现了7次。
字符"嗽"出现了7次。
字符"得"出现了1次。
字符"很"出现了1次。
字符"重"出现了1次。
字符"。"出现了4次。
字符"”"出现了8次。
字符" "出现了30次。
字符"你"出现了1次。
字符"多"出现了1次。
字符"年"出现了1次。
字符"记"出现了1次。
字符"?"出现了3次。
字符"七"出现了1次。
字符"十"出现了3次。
字符"五"出现了1次。
字符"岁"出现了3次。
字符"二"出现了1次。
字符"吗"出现了2次。
字符"不"出现了3次。
字符"四"出现了1次。
字符"时"出现了2次。
字符"也"出现了1次。
字符"那"出现了1次。
字符"现"出现了1次。
字符"在"出现了1次。
字符"还"出现了1次。
字符"要"出现了1次。
字符"等"出现了1次。
字符"到"出现了1次。
字符"什"出现了1次。
字符"么"出现了1次。




参考:
1.link-01

感谢支持!