字符串.格式获胜';t创造正确的间距,用尽所有方法

本文关键字:有方法 获胜 格式 创造 字符串 | 更新日期: 2023-09-27 18:26:01

这似乎是一个微不足道的问题,但我发誓我已经用尽了我能找到的每一个方法。我正试图将字典的内容输出到文本框中。这是用C#编写的。我知道它有多相关,但我正在输出到一个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

请帮忙。我真的不知道为什么这些不起作用。

字符串.格式获胜';t创造正确的间距,用尽所有方法

我怀疑问题在于您使用的是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 UI中尝试一下,你可能会看到同样的破损——除非你将字体设置为单空格字体。

然而,单空间字体可能看起来很难看。。。在这种情况下,您可能根本不想为此使用CCD_ 2。你可以使用其他更高级的基于文本的控件,也可以使用更适合显示数据列表/网格的控件。