39

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

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

5 回答 5

81

使用连接

string.Join(System.Environment.NewLine, errorMessages);
于 2013-01-03T13:45:13.527 回答
67

您可以使用String.Join

string.Join("\n", errorMessages);
于 2013-01-03T13:45:00.550 回答
18
using System;

string.Join(Environment.NewLine, errorMessages);
于 2013-01-03T13:48:08.603 回答
6

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

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

或者

var messages = String.Join(Environment.NewLine, errorMessages);
于 2013-01-03T13:46:38.290 回答
2

I was having problems using

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

In the page, instead of the new line I was getting \r\n instead. I solved it by using

string.Join("<br>", errorMessages);
于 2022-01-12T14:03:44.617 回答