将换行符附加到字符串除外的最佳方法

时间:2013-01-03 13:42:27

标签: c# .net string refactoring

我一直在寻找最好/最干净的方法来迭代字符串列表,然后创建一个由换行符分隔的字符串(除了最后一行)。像这样:

String 1
String 2
String 3

我在这里写了两个循环,在字符串的末尾有一个换行符(我想避免使用),而另一个则没有。这个不仅对我来说不是“干净”。我认为有一种更简单的方法可以使逻辑几乎与在字符串末尾有一个新行的示例中一样简单。

List<string> errorMessages = new List<string>();
string messages = "";

//Adds newline to last string. Unwanted.
foreach(string msg in errorMessages)
{
    messages += msg + "\n";
}

messages = "";
bool first = true;

//Avoids newline on last string
foreach (string msg in errorMessages)
{
    if(first)
    {
        first = false;
        messages = msg;
    }
    else
    {
        messages += "\n" + msg;
    }
}

也许这是一厢情愿的想法,但我认为这是一个足够普遍的事情,可以保证更好的方式来实现我的目标。

4 个答案:

答案 0 :(得分:60)

使用加入

string.Join(System.Environment.NewLine, errorMessages);

答案 1 :(得分:40)

您可以使用String.Join

string.Join("\n", errorMessages);

答案 2 :(得分:12)

using System;

string.Join(Environment.NewLine, errorMessages);

答案 3 :(得分:3)

最短的方法是使用.Aggregate(...)String.Join(...)

var messages = errorMessages.Aggregate((x, y) => x + Environment.NewLine + y);

或者

var messages = String.Join(Environment.NewLine, errorMessages);