Wie kann ich den Zeilenumbruch aus einem Wert mit JavaScript lesen und alle Zeilenumbrüche durch <br />
Elemente ersetzen ?
Beispiel:
Eine von PHP wie folgt übergebene Variable:
"This is man.
Man like dog.
Man like to drink.
Man is the king."
Ich möchte, dass mein Ergebnis nach der Konvertierung durch JavaScript ungefähr so aussieht:
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
javascript
Jin Yong
quelle
quelle
Antworten:
Dadurch werden alle Rückgaben in HTML umgewandelt
Falls Sie sich fragen, was ?: Bedeutet. Es wird als nicht erfassende Gruppe bezeichnet. Dies bedeutet, dass eine Gruppe von Regex in Klammern nicht im Speicher gespeichert wird, auf den später verwiesen wird. Weitere Informationen finden Sie in diesen Threads:
https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169
quelle
str.replace("\n", '<br />')
(erstes Argument ist eine reguläre Zeichenfolge) ersetzt nur das erste Vorkommen.String#replace
Erzwingt das erste Argument vonString
einer Escape-RegExp
Instanz ohne Flags.str.replace('\n', '<br />');
ist gleichbedeutend mitstr.replace(new RegExp('\n'), '<br />');
str.split("\n").join("<br />")
jsperf.com/split-join-vs-replace-regex RegEx scheint etwas schnellerWenn in Ihrem Unternehmen nur Zeilenumbrüche angezeigt werden, können Sie dies mit CSS tun.
Jsfiddle: https://jsfiddle.net/5bvtL6do/2/
Hinweis : Achten Sie auf die Code-Formatierung und das Einrücken, da dies
white-space: pre-line
angezeigt wird alle Zeilenumbrüche ( mit Ausnahme des letzten Newline nach dem Text finden Geige).quelle
white-space: pre-wrap;
ich bevorzuge die Verwendungwhite-space: pre-line;
(um doch keine letzte Unterbrechungslinie hinzuzufügen)Ohne Regex:
quelle
\\n
stimme nicht mit einer neuen Zeile überein, weil es nachbackslash
+ suchtn
.Dies funktioniert für Eingaben aus einem Textbereich
quelle
Wenn die akzeptierte Antwort für Sie nicht richtig funktioniert, können Sie es versuchen.
Es hat bei mir funktioniert.
quelle
new RegExp('\n', 'g')
ist identisch mit/\n/g
(mit Ausnahme einiger Kleinigkeiten über die Verwendung primitiver Literale im Vergleich zu ihren Konstruktoren)./\n/g
als Zeichenfolge anzugeben !Unabhängig vom System:
quelle
Es ist auch wichtig, den Rest des Textes zu codieren, um sich vor möglichen Skriptinjektionsangriffen zu schützen
quelle
Dies funktionierte für mich, als der Wert von einer TextBox kam:
quelle
Für diejenigen unter Ihnen, die nur max. 2
<br>
in einer Reihe können Sie dies verwenden:Erste Zeile: Suchen Sie nach
\n
ODER,\r\n
wenn sich mindestens 2 davon in einer Reihe befinden, z\n\n\n\n
. Dann ersetzen Sie es durch 2br
Zweite Zeile: Suchen Sie nach allen einzelnen
\r\n
oder\n
und ersetzen Sie sie durch<br>
quelle
Wenn Sie die Variable von PHP senden, können Sie sie damit vor dem Senden erhalten:
quelle
str = str.replace(/\n/g, '<br>')
str = str.replace(/\n*\n/g, '<br>')
quelle
str = str.replace(/\n+/g, '<br>')
für den zweiten Fall zu verwendenIch beantworte die spezifische Frage nicht, aber ich bin sicher, dass dies jemandem helfen wird ...
Wenn Sie eine Ausgabe von PHP haben, die Sie mit JavaScript auf einer Webseite rendern möchten (möglicherweise das Ergebnis einer Ajax-Anforderung), und nur Leerzeichen und Zeilenumbrüche beibehalten möchten, sollten Sie den Text in einen
<pre></pre>
Block einschließen :quelle
Versuchen
quelle