它奇怪,我需要从文件中计算字符,并且在以后的计算中使用该信息,现在它的奇怪部分,我想检查我的程序是否正确每个字符的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++;
}
}
答案 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());