人物计数

时间:2012-11-21 19:00:09

标签: c# monodevelop

它奇怪,我需要从文件中计算字符,并且在以后的计算中使用该信息,现在它的奇怪部分,我想检查我的程序是否正确每个字符的countig外观所以我将我的结果与monodevelop匹配进行比较来自ctrl + f 例如对于'i'字符我的结果是518 monodevelop有561匹配(区分大小写),所以也许它看起来像我的程序不好,但我做了测试并重新编写它另一个文件,并再次检查单声道匹配现在我的结果和monodevelop匹配相同。为什么会这样?

这是代码

public Histogram (String nazwa)
    {
        histogram = new Dictionary<string,float>();
        StringBuilder plik = odczytPliku.odczyt(nazwa);
        n = 0;
        foreach(char w in plik.ToString())
        {
            if(!histogram.ContainsKey(new string(w,1)))
                histogram.Add(new string(w,1),1);
            else
                histogram[new string(w,1)]+=1;
            n++;
        }

    }

2 个答案:

答案 0 :(得分:2)

以下代码将在字符串中创建字符的直方图。这假设你正确地传入了字符串。

public Dictionary<char,int> Histogram( String myString )
{
    Dictionary<char,int> hist = new Dictionary<char,int>()

    if( !String.IsNullOrEmpty(myString) )
    {
        for( int i = 0; i < myString.Length; i++ )
        {
            char c = myString[i];

            if(hist.ContainsKey(c))
            {
                hist[c] = hist[c] + 1;
            }
            else
            {
                hist.Add(c,1);
            }
        }
    }

    return hist;
}

答案 1 :(得分:2)

public Dictionary<char, int> Hist(string target)
    {
        return target.GroupBy(c => c)
            .ToDictionary(g => g.Key, g => g.Count());
    }

要使其不区分大小写,请按以下方式调用:

var hist = Hist(target.ToUpperInvariant());