将换行符附加到字符串的最佳方法除了最后一个

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

String 1 String 2 String 3 

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

 List errorMessages = new List(); 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; } } 

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

您可以使用String.Join 。

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

使用加入

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

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

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

要么

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