2

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

正在安装的字符串

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
4

3 回答 3

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这里也是一个好主意,如评论中所述)

于 2013-08-28T12:01:32.943 回答
2

看看这个 StackOverflow 问题

基本上,您可以使用 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;
}
于 2013-08-28T12:00:55.830 回答
0

Trim your string and calculate the longest string length:

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());
}
于 2013-08-28T12:05:54.480 回答