在 C# 中使用未知字符串长度的 \t 进行格式化

Formatting with \t with unknown string lengths in C#

这可能是一个很难的问题,或者是一个愚蠢的简单问题。不管怎样,请耐心等待,因为我对 C#.

还很陌生

我一直在构建一个 Form,里面有一个 ListBox,还有一些其他东西,一切都很顺利。事情变得奇怪的地方在于用信息填充所述框。

到目前为止,我填写此 ListBox 的逻辑是:

foreach (var value in userList)
{
    listBoxForForm.Items.Add("#" + value.internalId + " \t\t-\t" + value.title + "\t\t-\t" + value.typeName);
}

(不要介意 "\t 之间的奇数 </code>!)</p> <p>问题是,如果某些值太长(不是 <code>value.length 中的 "long",而是宽度中的 "long"),这看起来很奇怪。

为了更好的解释,我截图了(原谅政府式的审查):

如您所见,问题是在这种情况下使用 \t 时文本格式似乎不正确。

有什么方法可以让我按照预期的 3 列样式整齐地设置此文本的格式?在不知道每个 value 中变量的长度的情况下,我的意思是?

你应该试试 String.PadLeft():

using System;

class Program {
    static void Main()
    {   
        string s = "cat".PadRight(10);  string s2 = "poodle".PadRight(10);
        Console.Write(s);   
        Console.WriteLine("feline");    
        Console.Write(s2);  
        Console.WriteLine("canine");
    }
}

这将输出:

cat       feline
poodle    canine

我想你要找的是this

String.PadRight 和 String.PadLeft 方法

您不应使用制表符,而应使用 String.PadRight(X),其中 X 是字段的最大长度。您将需要确保您的 X 值比数据的最大长度长,或者将数据裁剪到最大长度以确保列对齐。