1. 程式人生 > 其它 >C# 統計字元出現次數

C# 統計字元出現次數

有如下字串:【"患者:“大夫,我咳嗽得很重。” 大夫:“你多大年記?” 患者:“七十五歲。” 大夫:“二十歲咳嗽嗎”患者:“不咳嗽。” 大夫:“四十歲時咳嗽嗎?” 患者:“也不咳嗽。” 大夫:“那現在不咳嗽,還要等到什麼時咳嗽?”"】。需求:
①請統計出該字元中“咳嗽”二字的出現次數,以及每次“咳嗽”出現的索引位置。
②擴充套件(*):統計出每個字元的出現次數。

IndexOf方法, // 搜尋如果不存在,返回 -1。注意看提示過載。用它的過載方法(見下面程式碼),返回索引位置。

mLastIndexOf // 最後出現的索引位置。 判斷,當 IndexOF 和 LastIndexOf 相等的時候,可以確定這個字串只出現了一次。

Dictionary<char, int>統計字元出現次數。

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();

輸出:

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

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();

輸出:

字元"患"出現了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