web-dev-qa-db-ja.com

最後を除いて文字列に改行を追加する最良の方法

文字列のリストを反復処理し、改行で区切られた文字列の単一の文字列を作成するための最良/最もクリーンな方法を探していました(最後を除く)。そのようです:

String 1
String 2
String 3

ここでは、文字列の末尾に改行がある(これは避けたい)ループとそうでないループを2つ記述しました。その人は私にとって「きれい」に見えないだけではありません。文字列の最後に新しい行がある例のようにロジックがほぼ単純になるように、もっと簡単な方法があると思います。

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;
    }
}

たぶんそれは希望的観測かもしれませんが、これは私の目標を達成するためのより良い方法を保証するのに十分な一般的な出来事だと思っていたでしょう。

26
Justin

String.Join を使用できます。

string.Join("\n", errorMessages);
44
Paul Fleming

結合を使用する

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

string.Join(Environment.NewLine, errorMessages);
14
Vishal Suthar

最短の方法は、.Aggregate(...)またはString.Join(...)を使用することです。

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

または

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