将字符串格式化为表格

时间:2013-08-28 11:58:42

标签: c# string

我有一个字符串,我已经初始化为空并构建字符串,如下所示我也得到了我想要的首选输出,这是最好的方法,因为这将作为电子邮件发送。考虑到公司名称的长度不同。

字符串是buit

foreach(string s in array)
{
emailBody += s + "          Success" + Environment.NewLine;
}

字符串输出

CompanyName    Success
CompanyName       Success
CompanyName         Success
CompanyName           Success
CompanyName         Success
CompanyName            Success
CompanyName          Success

想要输出如下


CompanyName   |   Success
CompanyName   |   Success
CompanyName   |   Success
CompanyName   |   Success
CompanyName   |   Success
CompanyName   |   Success
CompanyName   |   Success

给出解决方案的输出

qxeawgentina                                           Success
TweseqmeChile                                           Success
Vidqwedal                                           Success
qwebr                                           Success
Doqa_brasil                                           Success
Sedaqqagentina                                           Success
KnaqwertArtina                                           Success

3 个答案:

答案 0 :(得分:4)

PadLeft是一个很好的功能,用于这样的东西。你可以这样做:

StringBuilder myString = new StringBuilder();
foreach(string s in array)
{
    myString.Append(s + "Success".PadLeft(15 - s.Length) + Environment.NewLine);
}
emailBody = myString.ToString();

将常量15更改为您的集合中最长的CompanyName,否则PadLeft会在它变为负数时抛出异常。

(如评论中所述,StringBuilder也是一个好主意)

答案 1 :(得分:2)

查看this StackOverflow Question

基本上你可以使用string.Format并指定每个占位符的宽度,如下所示:

// Prints "--123       --"
string.Format("--{0,-10}--", 123);
// Prints "--       123--"
string.Format("--{0,10}--", 123);

编辑: 将此应用于您的示例:

foreach(string s in array)
{
    emailBody += string.Format("{0, 25} | Success", s) + Environment.NewLine;
}

答案 2 :(得分:0)

修剪你的字符串并计算最长的字符串长度:

int maxLength = 0;

foreach(string s in array)
{
    l = s.Trim().Length;
    if (l > maxLength)
    {
        maxLength = l;
    }
}

foreach(string s in array)
{
    emailBody += System.Format("{0,-" + maxLength.ToString() + "}    |    Success" + Environment.NewLine, s.Trim());
}