2009-05-31 17 views
1

私はASP.NETのコードを始めから書いてきましたが、今日はこれまでに見たことがないものがありました。私は通常、 "\ r \ n"を期待して、C#の改行(例えば、テキストエリアからASP.NETに投稿されたとき)を探しました。今私はMVCフレームワークを使用しており、テキストエリアからのワイヤー上のテキストは単に改行のための "\ n"を持っています。C#とASP.NETの改行バリエーションは何ですか? ( r nと n)

改行を正規化する古い学校のTextBoxコントロールで何かが起こっていますか? MVCはフォームデータをそのまま使用するので、これは正常ですか?いくつかの洞察力を得るのが大好きです。

答えて

6

私は、実際の改行シーケンスがブラウザによって異なることを確認しました。あなたがページ上の複数行のテキストエリアを持っているし、ページが、その後に提出された場合

IEは返す「\ rを\ n」は改行を示します。この場合、FFは「\ n」を返します。

私は2006年の終わりにどこかでそれをテストしたので、今は異なるかもしれません。

私はWebFormsとMVCの関係がないとは思いません。どちらも、入力された入力を処理して、それをそのままあなたに返します。

あなたが何らかの形でこれらの文字を処理して、交換したい場合は、それが長期に短いためにそれをやって意味をなさないと思います。

string userText = form["Text"]; 
userText = userText.Replace ("\r\n", "<br/>").Replace ("\r", "<br/>"); 
+1

「\ r」の代わりに「\ n」を使用することを意味しましたか?string userText = form ["Text"]; userText = userText.Replace( "\ r \ n"、 "
").Replace( "\ n"、 "
"); –

+0

すべての改行をキャッチする単一のRegex式は、次のようになります: '\ r \ n?| \ n'; \ r \ n、\ r、\ nをキャッチする必要があります。 – GeorgDangl

4

\ nは、* nix形式のシステムの行末の変形です。 \ r \ nはWindows固有の行末動作です。

行末をチェックしていて、Windows以外の環境にインターフェイスを公開している場合は、\ r \ nだけでなく\ nも確認してください。

もっと詳しく知りたい場合は、Newlineの記事をWikipediaでチェックしてください。

+0

@エミールH:訂正ありがとうございます。もちろん、あなたは正しいです。\ nは、* nixシステムではなく、\ rです。 – Kosi2801