39

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

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

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

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

使用に問題がありました

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

ページでは、改行の代わりに\r\nを取得していました。を使って解決しました

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