有没有办法在C#中完美地对齐两个字符串? 我试图将字符串“CBI”与“中央调查局”对齐,我希望两个字符串占用35个字符。我使用函数
string.Format("{0,-35}", str);
格式化两个字符串。但它们似乎没有正确对齐。它与字体设置有关吗? 我必须在excel的图表中使用这些字符串,并且它们必须在屏幕上占据相同的宽度
答案 0 :(得分:6)
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希望将其包含在答案中,我很乐意将其从我的答案中删除。
您可以找到可以使用的here
的MonoSpaced字体列表答案 1 :(得分:0)
我发现我从不满足于等宽字体,所以我使用带有微空格字符(约1像素宽)(字符)0x200A的字符填充来排序。在使用字符串列表模拟列对齐时,这尤其有用。最灵活的方法是使用while循环比较字符串像素宽度并添加空格字符直到匹配。我使用带有NoPadding标志的System.Windows.Forms.TextRenderer.MeasureText()并且只是要保存,初始大小为int.MaxValue,然后检查System.Drawing.Size的Width参数。如果您在MeasureText构造函数中输入任何Font,它可以使用任何字体。