2012-04-23 11 views
4

すべてのカーリッジリターンをC#の<br/>タグに置き換えようとしています。私はこれがすべての世話をすると思った:文字列内のすべてのCR + LFを見つけるにはどうすればよいですか?

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

明らかにそうではありませんでした。それはCR+LFをキャッチするようではありません。

+6

あなたは 'S'は\ rを\ N 'はなく、単に' \のN' '含まれていることを確認したことがありますか? – ChaosPandion

+0

'System.Environment.Newline'は実行環境に依存します。 ChaosPandionが言ったように、あなたは実際に '\ n'を使って作業している可能性が高いです。 – Thomas

答えて

9

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

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

(。文字列にはバックスラッシュがないよう"<br/>"のリテラル逐語的文字列を使用してにはポイントがありませんことに注意してください、そして、それは単一行です)

+0

なぜあなたはいつも私より30秒も速いです:( –

+2

@JimSchubert - 心の認識ソフトウェアでなければなりません:) – Coffee

+1

@Adel、It's最も可能性の高いルールは「良いプログラマとJon Skeet以外のプログラマの2種類があります」 [ソース](http://meta.stackexchange.com/a/9138/152872) –

3

あなたは確かに知った場合\ r \ nを置き換えますstring.replaceを使用するのはなぜですか?

s.replace("\r\n", "<br/>") 
2
string ReplaceNewlines(string blockOfText, string replaceWith) 
{ 
    return blockOfText.Replace("\r\n", replaceWith).Replace("\n", replaceWith).Replace("\r", replaceWith); 
} 
3
このコードにより、

input.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n") 
関連する問題