So ersetzen Sie \n durch in Javascript?

Lesezeit: 4 Minuten

Benutzeravatar von eugeneK
eugenK

Ich habe einen Textbereich, wo ich einfüge \n wenn der Benutzer die Eingabetaste drückt. Code aus diesem Textbereich wird über an einen WCF-Dienst gesendet jQuery.ajax(). Ich kann nicht speichern \n in DB, da es in anderen Anwendungen, die den Dienst nutzen, nicht angezeigt wird.

Wie kann ich ersetzen \n mit <br /> Schild?

Lösung

Nun, viele von Ihnen haben es versucht und einige haben mit Javascript Regex mit /g (globaler Modifikator) richtig gelegen. Am Ende hatte ich \n zweimal eingefügt, ich weiß nicht warum, meine einzige Vermutung ist, dass jQuery bei einem Tastendruckereignis ein doppeltes \n erstellt hat, das ich debugge.

$('#input').keypress(function (event) {
    if (event.which == '13') {
        inputText = $('#input').val() + '\n';
        $('#input').val(inputText);
    }
});

  • Normalerweise ist es keine gute Idee, es auf der Clientseite zu ersetzen

    – Teneff

    13. Juni 2011 um 14:40 Uhr

  • @Teneff, \n wird dann nicht an den Server gesendet, es scheint weggelassen zu werden. Ich kann es auf dem Server ändern, aber ich erhalte nichts außer Text.

    – eugenK

    13. Juni 2011 um 14:42 Uhr

  • Sie sollten es auch im eingegebenen Rohformat speichern. Wenn Sie jemals eine neue App hinzugefügt haben, um Daten abzurufen, die das /n unterstützen könnten, sollten Sie es dann sicherlich zeigen? hast du versucht es zu codieren?

    – jiplodieren

    13. Juni 2011 um 14:43 Uhr


  • ist #input ein <input type="text"/>? Denn wenn ja, wirst du keine bekommen \n. Wenn es sich um einen Textbereich handelt, schlage ich vor, dass Sie die Daten konvertieren, wenn der Benutzer auf die Schaltfläche zum Senden klickt und nicht beim Tippen. Aber besser als das würde ich einfach serverseitig konvertieren.

    – BrunoLM

    13. Juni 2011 um 15:18 Uhr

  • @BrunoLM, #input ist Textarea und ich ersetze \n durch :br: beim Absenden und wende :br: in br HTML-Tag um, wenn ich Daten vom Server zurückerhalte. Warum ich es nicht auf dem Server mache, weil ich neben br-Tags auch Bilder habe und das Bild-Tag ziemlich lang ist, um es über den Dienst an den jQuery-Wrapper zu senden, also markiere ich die Tags, die ich brauche, mit Doppelpunkten, genauso wie Foren das tun [tagname]

    – eugenK

    13. Juni 2011 um 17:51 Uhr

Ersetzen Sie durch globalen Geltungsbereich

$('#input').val().replace(/\n/g, "<br />")

oder

$('#input').val().replace("\n", "<br />", "g")

  • es ersetzt fine global, aber es ersetzt zweimal das br-Tag auf Tastendruck

    – eugenK

    13. Juni 2011 um 14:50 Uhr

Benutzeravatar von Teneff
Teneff

es könnte so gemacht werden:

$('textarea').val().replace(/\n/g, "<br />");

bearbeiten: Entschuldigung … die regulären Ausdrücke in Javascript sollten nicht in Anführungszeichen gesetzt werden

Arbeitsbeispiel

  • Funktioniert nicht, da er ersetzen will \n und nicht /\n/. Und wenn es als Regex gedacht war, würde es nur das erste Vorkommen ersetzen.

    – BrunoLM

    13. Juni 2011 um 14:45 Uhr

  • @Qtax, es ersetzt nur das erste Auftreten von \n und lässt andere weg

    – eugenK

    13. Juni 2011 um 14:47 Uhr

  • Verwenden Sie einfach einen String-Ersatz, wie z "\n"wenn Sie wirklich Regex verwenden möchten, können Sie dies tun /\n/g.

    – Qsteuer

    13. Juni 2011 um 14:48 Uhr

Benutzeravatar von rzetterberg
rzetterberg

Wie in Kommentaren und anderen Antworten gesagt, ist es besser, dies serverseitig zu tun.

Wenn Sie jedoch wissen möchten, wie es auf Clientseite geht, ist dies eine einfache Lösung:

textareaContent.replace(/\\n/g, "<br />");

Wo textareaContent ist die Variable mit den Daten im Textbereich.

Bearbeiten: Geändert, sodass es global ersetzt und nicht nur die erste Übereinstimmung.

  • Es ersetzt nur das erste Auftreten von \n

    – eugenK

    13. Juni 2011 um 14:45 Uhr

Wenn Sie PHP unterstützen, sollten Sie dies überprüfen: http://php.net/manual/en/function.nl2br.php

Sie können eine einfache Javascript-String-Funktion verwenden.

 string.replace("\n", "<br>")

Benutzeravatar von Senad Meškin
Senad Meškin

Sie können beispielsweise die in Javascript integrierte Ersetzungsfunktion mit ein wenig Hilfe von Regex verwenden

$('#input').val().replace(/\n\r?/g, '<br />')

Dieser Code gibt alle Eingaben zurück, die durch ersetzt wurden <br>

Benutzeravatar von Richard Friend
Richard Freund

Von innerhalb deines WCF-Dienstes kannst du es einfach nicht nutzen String.Replace ?

text = text.Replace("\n","<br />");

  • Tun Sie dies nicht! Sie müssen einen regulären Ausdruck verwenden, um alle Übereinstimmungen global zu ersetzen. In Ihrem Fall ersetzt es zB nur das erste Vorkommen

    – Karue Benson Karue

    3. April 2020 um 23:44 Uhr

1431280cookie-checkSo ersetzen Sie \n durch in Javascript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy