So entfernen Sie alle Zeilenumbrüche aus einer Zeichenfolge

Lesezeit: 5 Minuten

So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Flügelklinge

Ich habe einen Text in einer Textarea und lese ihn mit dem Attribut .value aus.

Jetzt möchte ich alle Zeilenumbrüche entfernen (das Zeichen, das erzeugt wird, wenn Sie drücken Eingeben) aus meinem Text jetzt mit .replace durch einen regulären Ausdruck, aber wie gebe ich einen Zeilenumbruch in einer Regex an?

Wenn das nicht möglich ist, gibt es eine andere Möglichkeit?

  • Mögliches Duplikat von Wie ersetze ich alle Zeilenumbrüche in einer Zeichenfolge durch
    -Tags?

    – Jun711

    26. Oktober 2018 um 0:32 Uhr

So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Eremit

Wie Sie einen Zeilenumbruch finden, variiert je nach Betriebssystemcodierung. Windows wäre \r\naber Linux verwendet nur \n und Apple verwendet \r.

Ich habe das in gefunden JavaScript-Zeilenumbrüche:

someText = someText.replace(/(\r\n|\n|\r)/gm, "");

Das sollte alle Arten von Zeilenumbrüchen entfernen.

  • Warum ist das getrennt \r\n und \n und \r besser als nur /[\n\r]/g? Dies ist sicherlich langsamer als es sein sollte, da es nur jedes Zeichen mit den zwei möglichen Optionen vergleichen muss.

    – Weg Codierung

    11. Dezember 2014 um 17:58 Uhr

  • Beim Analysieren von zurückgegebenen Daten von memcached in node.js mit /[\n\r]/g hat den Trick für mich getan. Danke Gone Coding! Die Option in der Antwort hat es geschlachtet.

    – Kyle Blässhühner

    21. September 2018 um 3:11 Uhr

  • * Apple hat aufgehört, Wagenrücklauf-Zeilenenden in MacOS X zu verwenden.

    – cael ras

    9. Januar um 7:04

1646259310 897 So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Spitze Ohren

Zeilenumbrüche (besser: Zeilenumbrüche) können Carriage Return (CR, \rauf älteren Macs), Zeilenvorschub (LF, \n, auf Unices inkl. Linux) oder CR gefolgt von LF (\r\n, unter WinDOS). (Im Gegensatz zu einer anderen Antwort hat dies nichts mit Zeichenkodierung zu tun.)

Daher am effizientesten RegExp wörtlich passend für alle Varianten ist

/\r?\n|\r/

Wenn Sie alle Zeilenumbrüche in einer Zeichenfolge abgleichen möchten, verwenden Sie eine globale Übereinstimmung,

/\r?\n|\r/g

bzw. Fahren Sie dann mit fort replace Methode, wie in mehreren anderen Antworten vorgeschlagen. (Wahrscheinlich tun Sie das nicht möchten die Zeilenumbrüche entfernen, aber durch andere Leerzeichen ersetzen, zum Beispiel das Leerzeichen, damit die Wörter intakt bleiben.)

  • Der Vollständigkeit halber sei angemerkt, dass es in Unicode vier verschiedene Zeilenumbrüche gibt: \u000a oder \nwas ein Zeilenvorschub ist; \u000d oder \rwas ein Wagenrücklauf ist; \u2028, ein Zeilentrenner; und \u2029, ein Absatztrennzeichen. In der Praxis reicht der von Ihnen gepostete Regex jedoch in den meisten Fällen aus.

    – Mathias Bynens

    30. Mai 2012 um 17:02 Uhr


  • @MathiasBynens Danke, aber U + 2028 und U + 2029 tun dies ausdrücklich nicht stellen Zeilenumbrüche in HTML (4.01) dar, auf denen der DOM-Baum und der Live-Wert des Textbereichs basieren: w3.org/TR/html4/struct/text.html#whitespace

    – Spitze Ohren

    30. Mai 2012 um 17:12 Uhr


  • @PointedEars Ja, aber die HTML-Serialisierung erfolgt nicht, wenn die Textbereiche festgelegt werden .value dynamisch, z textarea.value = 'a\u2029b'; textarea.value.charAt(1) == '\u2029'; // true. Aber das ist wahrscheinlich ein Grenzfall – wie gesagt, in den meisten Fällen ist Ihre Regex ausreichend.

    – Mathias Bynens

    30. Mai 2012 um 18:58 Uhr


  • @MathiasBynens Da U + 2028 und U + 2029 in HTML (4.01) keine Zeilenumbrüche darstellen, ist dies bei dieser Zuweisung der Fall nicht Zeigen Sie zwei Zeilen im Textbereich mit jeder größeren DOM-Implementierung und Layout-Engine an. Also würde niemand, der bei klarem Verstand ist, einen solchen Auftrag überhaupt machen.

    – Spitze Ohren

    28. Juni 2012 um 22:44 Uhr


  • @CrabBucket Gern geschehen. Aber Ihre Modifikation funktioniert nur, wenn es welche gibt wörtlich (bereits entkam) „\r“ und „\n“ im String, oder wenn der Code übergeben wird eval() oder so ähnlich (was Sie vermeiden sollten).

    – Spitze Ohren

    4. Mai 2017 um 23:27 Uhr

1646259310 837 So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
RobW

var str = " \n this is a string \n \n \n"

console.log(str);
console.log(str.trim());

String.trim() Entfernt Leerzeichen am Anfang und Ende von Zeichenfolgen … einschließlich Zeilenumbrüchen.

const myString = "   \n \n\n Hey! \n I'm a string!!!         \n\n";
const trimmedString = myString.trim();

console.log(trimmedString);
// outputs: "Hey! \n I'm a string!!!"

Hier ist eine Beispielgeige: http://jsfiddle.net/BLs8u/

HINWEIS! Es schneidet nur den Anfang und das Ende der Zeichenfolge ab, keine Zeilenumbrüche oder Leerzeichen in der Mitte der Zeichenfolge.

  • Dadurch werden nur Zeilenumbrüche am Anfang und am Ende der Zeichenfolge entfernt. OP fragte, wie man ALLE Zeilenumbrüche entfernt.

    – Jan Walter

    1. Februar 2015 um 15:45 Uhr

  • Ja, nur als Option hinzufügen.

    – RobW

    13. April 2018 um 21:47 Uhr

  • Arbeitete für das, was ich brauchte – Anfang und Ende der Zeichenfolge. Danke!

    – Harlin

    18. April 2019 um 22:39 Uhr

1646259311 453 So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Kendall Frey

Sie können verwenden \n in einer Regex für Zeilenumbrüche und \r für Rücksendungen.

var str2 = str.replace(/\n|\r/g, "");

Verschiedene Betriebssysteme verwenden unterschiedliche Zeilenenden mit unterschiedlichen Mischungen von \n und \r. Diese Regex wird sie alle ersetzen.

So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Freezystem

Die einfachste Lösung wäre:

let str="\t\n\r this  \n \t   \r  is \r a   \n test \t  \r \n";
str = str.replace(/\s+/g, ' ').trim();
console.log(str); // logs: "this is a test"

.replace() mit /\s+/g Regexp ändert sich alle Gruppen von Leerzeichen zu einem einzigen Leerzeichen in der gesamten Zeichenfolge, dann wir .trim() das Ergebnis, um alle überzähligen Leerzeichen vor und nach dem Text zu entfernen.

Als Leerzeichen gelten:
[ \f\n\r\t\v​\u00a0\u1680​\u2000​-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

  • Genial, aber ich bekomme es zum Laufen, indem ich die Variable neu zuweise: str = str.replace(/\s+/g, ' ').trim();

    – FredK

    12. Januar 2020 um 9:28 Uhr

1646259312 137 So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Omni

Wenn Sie alle Steuerzeichen entfernen möchten, einschließlich CR und LF, können Sie Folgendes verwenden:

myString.replace(/[^\x20-\x7E]/gmi, "")

Es entfernt alle nicht druckbaren Zeichen. Dies sind alle Charaktere NICHT innerhalb des ASCII-HEX-Raums 0x20-0x7E. Fühlen Sie sich frei, den HEX-Bereich nach Bedarf zu ändern.

  • Genial, aber ich bekomme es zum Laufen, indem ich die Variable neu zuweise: str = str.replace(/\s+/g, ' ').trim();

    – FredK

    12. Januar 2020 um 9:28 Uhr

1646259313 834 So entfernen Sie alle Zeilenumbruche aus einer Zeichenfolge
Gordon Freeman

var str = "bar\r\nbaz\nfoo";

str.replace(/[\r\n]/g, '');

>> "barbazfoo"

916680cookie-checkSo entfernen Sie alle Zeilenumbrüche aus einer Zeichenfolge

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

Privacy policy