将字符串格式化为类似表格

本文关键字:表格 字符串 格式化 | 更新日期: 2023-09-27 18:29:30

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

正在构建的字符串

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

将字符串格式化为类似表格

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也是一个好主意)

看看这个StackOverflow问题

基本上你可以使用字符串。格式化并指定每个占位符的宽度,如下所示:

// 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;
}

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

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());
}