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)
Vis*_*har 14
using System;
string.Join(Environment.NewLine, errorMessages);
Run Code Online (Sandbox Code Playgroud)
最短的方法是使用.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)