2

有没有办法在 C# 中完美对齐两个字符串?我正在尝试将字符串“CBI”与“Central Bureau of Investigation”对齐,并且我希望两个字符串都占用 35 个字符。我使用该功能

string.Format("{0,-35}", str);

格式化两个字符串。但它们似乎没有正确对齐。它与字体设置有关吗?我必须在 excel 的图表中使用这些字符串,并且它们必须在屏幕上占据相同的宽度

4

2 回答 2

7

是的,有PadLeftPadRight

str.PadLeft(35);
str.PadRight(35);

str = "BBQ and Slaw";
Console.WriteLine(str.PadLeft(15));  // Displays "   BBQ and Slaw".
Console.Write(str.PadRight(15));     // Displays "BBQ and Slaw   ".

文档中的旁注:

但是,如果 totalWidth 小于此实例的长度,则该方法返回对现有实例的引用

基本上,如果您的长度小于字符串的长度,则返回现有字符串的引用


如果 EvenMcDonnal 希望将其包含在答案中,我很乐意将其从答案中删除。

您可以在此处找到可以使用的 MonoSpaced 字体列表

于 2013-09-12T21:40:07.730 回答
0

我发现我永远不会对等宽字体感到满意,所以我使用带有微空间字符(大约 1 像素宽)(char)0x200A 的字符填充来排列。这在使用字符串列表模拟列对齐时特别有用。最灵活的方法是使用 while 循环比较字符串像素宽度并添加空格字符直到匹配。我使用 System.Windows.Forms.TextRenderer.MeasureText() 和 NoPadding 标志,只是为了保存,初始大小为 int.MaxValue,然后检查 System.Drawing.Size 的 Width 参数。如果您在 MeasureText 构造函数中输入任何字体,它适用于任何字体。

于 2016-10-23T18:43:05.127 回答