2009-05-31 5 views
1

Ich habe von Anfang an Code für ASP.NET geschrieben und heute bin ich auf etwas gestoßen, das ich noch nie zuvor gesehen habe. In der Regel habe ich nach Zeilenumbrüchen in C# gesucht (wenn sie beispielsweise in ASP.NET aus einem Textfeld bereitgestellt wurden), indem ich "\ r \ n" erwartet habe. Jetzt benutze ich das MVC-Framework, und der Text, der über den Draht von einem Textbereich kommt, hat einfach "\ n" für Zeilenumbrüche.Was ist mit den Zeilenumbruch-Variationen in C# und ASP.NET? ( r n vs. n)

Gibt es in Old-School-TextBox-Steuerelementen etwas, das die Zeilenumbrüche normalisiert? Da MVC nur die Formulardaten unverändert verwendet, ist das normal? Würde gerne etwas Einblick bekommen.

Antwort

6

Ich habe beobachtet, dass die tatsächliche Zeilenfolge von Browser zu Browser unterscheidet.

Wenn Sie ein mehrzeiliges Textfeld auf einer Seite haben und die Seite wird dann vorgelegt:

IE gibt „\ r \ n“, um anzuzeigen, Zeilenumbrüche. FF gibt in diesem Fall "\ n" zurück.

Ich habe es irgendwann Ende 2006 getestet, so dass es jetzt anders sein kann.

Ich glaube nicht, dass es etwas mit WebForms vs. MVC zu tun haben könnte. Beide verarbeiten nur die übermittelten Eingaben und senden sie an Sie zurück, so wie sie sind.

Wenn Sie wollen, irgendwie diese Zeichen verarbeiten und ersetzen Sie es Sinn machen würde, es auf lange zu kurzer Zeit zu tun:

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

Einfach bestätigen, wollten Sie "\ n" anstelle von "\" String verwenden userText = form ["Text"]; userText = userText.Replace ("\ r \ n", "
") .Replace ("\ n", "
"); –

+0

Ein einzelner Regex-Ausdruck zum Auffinden aller Zeilenumbrüche wäre wie folgt: '\ r \ n? | \ N'; es sollte \ r \ n, \ r und \ n fangen. – GeorgDangl

4

\ n ist die Zeilenende-Variante für * nix-artige Systeme. \ r \ n ist Windows-spezifisches Zeilenendeverhalten.

Wenn Sie nach Zeilenenden suchen und Ihre Schnittstelle für Nicht-Windows-Umgebungen verfügbar machen, sollten Sie nicht nur nach \ r \ n sondern auch nach \ n suchen.

Für mehr Hintergrund, überprüfen Sie den Newline Artikel bei Wikipedia.

+0

@Emil H: Danke für die Korrektur. Natürlich hast du recht, \ n ist für * nix Systeme, nicht \ r. – Kosi2801

Verwandte Themen