4

<br/>すべてのcarrageリターンをC#のタグに置き換えようとしています。私はこれですべてがうまくいくと思いました:

StringBuilder sb = new StringBuilder(s);
sb.Replace(System.Environment.NewLine, @"<br/>");

しかし、明らかにそうではありません。キャッチしていないようですCR+LF

4

4 に答える 4

9

これは、Windows上にある可能性が高いCR+LFの場合に機能します Environment.NewLineもちろん、文字列に実際に改行のみが含まれている状況や、キャリッジリターンのみが含まれている状況は検出されません。おそらくあなたが望む:

StringBuilder sb = new StringBuilder(s).Replace("\r\n", "<br/>")
                                       .Replace("\n", "<br/>")
                                       .Replace("\r", "<br/>");

(文字列にはバックスラッシュがなく、1行であるため、逐語的な文字列リテラルを使用しても意味がないことに注意してください"<br/>"。)

于 2012-04-23T15:36:31.397 に答える
3

確実に置換することがわかっている場合は、\ r \ n string.replaceを使用しないのはなぜですか?

s.replace("\r\n", "<br/>")
于 2012-04-23T15:36:50.380 に答える
3

このコードによって

input.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n")
于 2012-04-23T15:39:24.983 に答える
2
string ReplaceNewlines(string blockOfText, string replaceWith)
{
    return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith);
}
于 2012-04-23T15:37:09.583 に答える