这似乎是一个微不足道的问题,但我发誓我已经用尽了所有能找到的方法。我试图将字典的内容输出到文本框。这是用C#编写的。 Idk是多么相关,但我输出到WPF文本框。我尝试过以下方法:
Dictionary<string, int> nGramDictionary = StatisticalBreakDown.getNGramFrequency(filePath, 3);
MasterStatsTextBlock.Text += "~N-Gram Frequency~" + "\r\n";
foreach (var kvp in nGramDictionary)
{
MasterStatsTextBlock.Text += string.Format("{0,-40}{1}{2}", kvp.Key, kvp.Value, Environment.NewLine);
}
MasterStatsTextBlock.Text += "\r\n";
和
Dictionary<string, int> nGramDictionary = StatisticalBreakDown.getNGramFrequency(filePath, 3);
MasterStatsTextBlock.Text += "~N-Gram Frequency~" + "\r\n";
foreach (var kvp in nGramDictionary)
{
MasterStatsTextBlock.Text += string.Format("{0}{1}{2}", kvp.Key.PadRight(-40), kvp.Value, Environment.NewLine);
}
MasterStatsTextBlock.Text += "\r\n";
和
Dictionary<string, int> nGramDictionary = StatisticalBreakDown.getNGramFrequency(filePath, 3);
MasterStatsTextBlock.Text += "~N-Gram Frequency~" + "\r\n";
foreach (var kvp in nGramDictionary)
{
MasterStatsTextBlock.Text += string.Format("{0}\t\t\t{1}{2}", kvp.Key, kvp.Value, Environment.NewLine);
}
MasterStatsTextBlock.Text += "\r\n";
但是都不行。每个人都发誓这些会起作用,但他们没有。以下是所有这三个输出的结果:
~N-Gram Frequency~
talan kirk book 1
kirk book of 1
book of mormon 1
of mormon am 1
mormon am tt 1
am tt extraction 1
tt extraction nephi 1
extraction nephi nephi 1
nephi nephi the 1
nephi the lord 1
the lord speaks 1
lord speaks to 1
speaks to his 1
to his children 1
his children the 1
children the savior 1
the savior teaches 1
savior teaches plainly 1
teaches plainly because 1
请帮忙。我不知道为什么这些不会起作用。
答案 0 :(得分:1)
我怀疑问题是您使用的是TextBox
,我的猜测是您还没有将文字设置为等宽字体...但是您正在尝试使用字符串格式来准确定位值。
要调查字符串格式,我建议您改用控制台应用。例如,以下演示显示字符串格式正常工作。键和值都有一个最大长度,键是左对齐的,值是右对齐的:
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
var data = new Dictionary<string, int>
{
{ "first", 10 },
{ "second", 1 },
{ "third", 100000 }
};
foreach (var entry in data)
{
Console.WriteLine("{0,-20}{1,8}", entry.Key, entry.Value);
}
}
}
在你的WPF用户界面中尝试一下,你可能会看到相同的破坏 - 除非你将字体设置为等宽字体。
然而,等宽字体可能看起来很难看......在这种情况下,您可能根本不想使用TextBox
。您可以使用其他更高级的基于文本的控件 - 或者您可以使用更适合显示数据列表/网格的控件。