1

各行に 1 つの項目があるもののリストを含む文字列を作成したいのですが、次のコードでは新しい行が維持されません。

foreach (DateTime date in dates)
{
    datelist += date.ToString("yyyy/MM/dd") + Environment.NewLine;
}

string mystring = String.Format(@"Hey there here is a list of dates

                                  Dates:

                                  {0}",
                                  datelist);

出力:

ねえ、ここに日付のリストがあります

日付:

2012/03/04 2012/03/05 2012/03/06

望ましい出力:

ねえ、ここに日付のリストがあります

日付:

2012/03/04

2012/03/05

2012/03/06

2 つの Environment.NewLines、\r\n のようなエスケープ、@ で文字列を開始するなどのバリエーションを試しましたが、目的の出力が得られませんでした。

改行が必要な文字列に記号を挿入し、string.Replace を使用して記号を Environment.NewLine に変更することで、最終的に問題を解決できました。

foreach (DateTime date in dates)
{
    datelist += date.ToString("yyyy/MM/dd") + "<br />";
}

string mystring = String.Format(@"Hey there here is a list of dates

                                  Dates:

                                  {0}",
                                  datelist.Replace(Environment.NewLine, "<br />"));

私が言ったように、これは機能しますが、行を含む文字列を別の文字列に挿入するときに古き良き連結が機能しない理由と、私の質問に対する標準/一般的な解決策が何であるかを知りたいです。

4

1 に答える 1

3

HTML 出力をレンダリングする場合は、使用しないでください。代わりにEnvironment.NewLine使用してください。<br />複数の連続する空白 (\rとを含む\n) は、ブラウザによって 1 つの空白に集約される場合があります。(私の経験に基づくと、実際の動作はブラウザに多少依存しますが、実際にはこれについて調査していません。)

foreach (DateTime date in dates)
{
    datelist += date.ToString("yyyy/MM/dd") + "<br />";
}

string mystring = String.Format("Hey there here is a list of dates<br />" +
    "Dates:<br />{0}", datelist);

文字列内のどこかに複数の空白行が必要な場合<br />は、もちろん複数の -s を使用してください。

于 2012-10-15T02:02:49.450 に答える