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