C# 用空格对齐字符串

C# 用空格对齐字符串,c#,C#,有没有一种方法可以使C#中的两个字符串完全对齐? 我正在尝试将字符串“CBI”与“中央调查局”对齐,我希望两个字符串都占用35个字符。我使用这个函数 string.Format("{0,-35}", str); 设置两个字符串的格式。但它们似乎没有正确对齐。这和字体设置有关吗? 我必须在excel的图表中使用这些字符串,它们必须在屏幕上占据相同的宽度 文件中的旁注: 但是,如果totalWidth小于此实例的长度,则该方法将返回对现有实例的引用 基本上,如果您的长度小于字符串的长度,则返回现有

有没有一种方法可以使C#中的两个字符串完全对齐? 我正在尝试将字符串“CBI”与“中央调查局”对齐,我希望两个字符串都占用35个字符。我使用这个函数

string.Format("{0,-35}", str);
设置两个字符串的格式。但它们似乎没有正确对齐。这和字体设置有关吗? 我必须在excel的图表中使用这些字符串,它们必须在屏幕上占据相同的宽度

文件中的旁注:

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

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


如果EvenMcDonnal希望在回答中包含这一点,我很乐意将其从我的回答中删除


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

所说的“对齐”是指“像素宽度相同”吗?仅仅因为两个字符串具有相同的字符数并不意味着它们在屏幕上的宽度相同。对于字体设置,是的,字体需要是固定宽度的字体,如
Courier New
我同意Bob,我的回答只反映了“我希望两个字符串都占用35个字符”的要求是的。PadRight的工作原理与字符串格式完全相同。我需要一种方法使其具有相同的像素宽度。正如@RobertByrne提到的,您需要控制字体来实现这一点。使用单间距字体,你的问题就会消失;只需再添加一件事情,你就会做得很好:它在输出中的显示方式完全取决于所使用的字体。您必须使用固定宽度的字体,如
Courier New
,才能使输出显示为对齐。string.Format的工作原理完全相同。我需要在屏幕上以像素为单位显示相同的宽度。感谢您的快速响应。@ChrisLively-我一直在寻找一种字体类型,该类型的字体需要用于实际添加评论中未提及的新内容(即非无衬线)@Pankaj如果您不使用固定宽度字体,则需要Graphics.MeasureString()之类的字体,然后尝试适当填充。可能最容易切换到固定宽度的字体。@Sayse:将您的答案与评论或其他答案中给出的信息结合起来,以形成问题的完整答案,这是完全可以接受的。你不需要特意挑选别的东西。。
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   ".