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

Jus*_*tin 26 .net c# string refactoring

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

String 1
String 2
String 3
Run Code Online (Sandbox Code Playgroud)

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

MrF*_*Fox 63

使用加入

string.Join(System.Environment.NewLine, errorMessages);
Run Code Online (Sandbox Code Playgroud)


Pau*_*ing 47

您可以使用String.Join.

string.Join("\n", errorMessages);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这正是我想要的。 (2认同)

Vis*_*har 14

using System;

string.Join(Environment.NewLine, errorMessages);
Run Code Online (Sandbox Code Playgroud)


Ioa*_*mas 5

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

var messages = errorMessages.Aggregate((x, y) => x + Environment.NewLine + y);
Run Code Online (Sandbox Code Playgroud)

或者

var messages = String.Join(Environment.NewLine, errorMessages);
Run Code Online (Sandbox Code Playgroud)