Entfernen Sie Zeilenumbrüche am Anfang und Ende der Zeichenfolge

Lesezeit: 4 Minuten

Benutzer-Avatar
JenZhang

Mir ist aufgefallen, dass trim() keine neuen Zeilenzeichen am Anfang und Ende einer Zeichenfolge entfernt, also versuche ich dies mit der folgenden Regex zu erreichen:

return str.replace(/^\s\n+|\s\n+$/g,'');

Dadurch werden die neuen Zeilen nicht entfernt, und ich fürchte, ich bin hier überfordert.

BEARBEITEN
Der String wird so mit ejs generiert

go = ejs.render(data, { 
    locals: { 
        format() {
            // 
        }
    } 
});

Und das ist go, aber mit ein paar Leerzeilen davor. Wenn ich go.trim() verwende, bekomme ich immer noch die neuen Zeilen davor.

<?xml version="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <fo:layout-master-set>
        <fo:simple-page-master master-name="Out" page-width="8.5in" page-height="11in" margin-top="1in" margin-bottom="0.5in" margin-left="0.75in" margin-right="0.75in">
            <fo:region-body margin-top="1in" margin-bottom="0.25in"/>
            <fo:region-before extent="1in"/>
            <fo:region-after extent="0.25in"/>
            <fo:region-start extent="0in"/>
            <fo:region-end extent="0in"/>
        </fo:simple-page-master>
    </fo:layout-master-set>
    <fo:page-sequence master-reference="Out" initial-page-number="1" force-page-count="no-force">
        <fo:static-content flow-name="xsl-region-before">
            <fo:block font-size="14pt" text-align="center">ONLINE APPLICATION FOR SUMMARY ADVICE</fo:block>
            <fo:block font-size="13pt" font-weight="bold" text-align="center">Re:
                SDF, SDF
            </fo:block>

        </fo:static-content>

        <fo:flow flow-name="xsl-region-body" font="10pt Helvetica">

            .. removed this content

        </fo:flow>
    </fo:page-sequence>
</fo:root>

  • Versuchen: /^[\s\n]+|[\s\n]+$/

    – Elclans

    28. Januar 2013 um 22:30 Uhr

  • Was trim benutzt du? Der Standard tut es. Bitte zeigen Sie uns auch Ihren String, vielleicht haben Sie dort einige seltsame (unsichtbare) Zeichen.

    – Bergi

    28. Januar 2013 um 22:31 Uhr

  • Wirklich Javascript trim() entfernt nicht newlines? Aber es sollte alle entfernen whitespaces von den Enden? Und newline sollte einer davon sein. \n ist ein Unterelement von \s.

    – Rohit Jain

    28. Januar 2013 um 22:31 Uhr


  • @elclanrs: Zeilenumbrüche sind enthalten \s

    – Bergi

    28. Januar 2013 um 22:31 Uhr

  • @LeeBlake trim() Zeilenumbruchzeichen am Ende meines Strings entfernt (Bash-Ausgabe von execSync), also muss mit seinem String etwas Seltsames vor sich gehen.

    – Joshua Pinter

    25. März 2016 um 18:18 Uhr

Benutzer-Avatar
höhner

Versuche dies:

str = str.replace(/^\s+|\s+$/g, '');

jsFiddle hier.

  • Ich habe es gelöst, indem ich von dieser Antwort zu geändert habe str.replace(/^\n|\n$/g, '');

    – phaberest

    11. September 2017 um 13:43 Uhr

  • Dadurch werden auch führende Leerzeichen entfernt.

    – ya.teck

    3. Juni 2018 um 15:47 Uhr

  • Wie können wir dasselbe mit PHP machen?

    – Benutzer6122500

    12. März 2019 um 22:55 Uhr

  • Das obige Beispiel hatte einen Fehler. Das sollte funktionieren: str.replace(/(^\s*(?!.+)\n+)|(\n+\s+(?!.+)$)/g, "")

    – Nordling Art.-Nr

    24. November 2019 um 21:36 Uhr

  • @phaberest, bitte schreibe deine eigene Antwort. Es sollte die akzeptierte sein.

    – Dũng Trần Trung

    14. April 2020 um 6:32 Uhr

Benutzer-Avatar
Ben Kane

String.trim() entfernt tatsächlich Zeilenumbrüche (und alle anderen Leerzeichen). Vielleicht war es früher nicht so? Zum Zeitpunkt des Schreibens ist dies definitiv der Fall. Aus der verlinkten Dokumentation (Hervorhebung hinzugefügt):

Die Methode trim() entfernt Leerzeichen an beiden Enden einer Zeichenfolge. Whitespace sind in diesem Zusammenhang alle Whitespace-Zeichen (Leerzeichen, Tabulatoren, geschützte Leerzeichen usw.) und alle Zeilenabschlusszeichen (LF, CR usw.).


Wenn Sie alle Zeilenumbrüche plus andere potenzielle Leerzeichen kürzen möchten, können Sie Folgendes verwenden:

return str.trim();

Wenn Sie wollen nur Zeilenumbrüche trimmen, können Sie eine Lösung verwenden, die speziell auf Zeilenumbrüche abzielt.

  • Vielleicht war es ein IE-Problem? Sieht aus wie trim ist nur IE 9+, aber der Himmel helfe Ihnen, wenn Sie an dieser Stelle IE 8 unterstützen. ;^D

    – Rufin

    14. März 2018 um 15:34 Uhr

  • Das ist definitiv eine Möglichkeit 🙂

    – Ben Kane

    14. März 2018 um 15:35 Uhr

  • Dies ist akzeptabel, wenn Sie alle Leerzeichen entfernen möchten … aber wenn Sie nur neue Zeilen entfernen und andere Leerzeichenquellen belassen müssen, wird dies fehlschlagen.

    – Spencer O’Reilly

    23. September 2019 um 21:58 Uhr

  • @SpencerO’Reilly Das stimmt, aber das Ziel der Frage ist es, Zeilenumbrüche zusätzlich zu den anderen Leerzeichen zu entfernen, die sie erfolgreich entfernt haben. Es kann auch hilfreich sein, nur Zeilenumbrüche zu entfernen, es ist einfach keine Antwort auf diese Frage

    – Ben Kane

    23. September 2019 um 22:06 Uhr

/^\s+|\s+$/g sollte etwas fangen. Ihre aktuelle Regex kann das Problem haben, dass, wenn Ihre Zeilenumbrüche enthalten \r Zeichen, denen sie nicht zugeordnet werden würden.

Versuche dies:

str.split('\n').join('');

1140580cookie-checkEntfernen Sie Zeilenumbrüche am Anfang und Ende der Zeichenfolge

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

Privacy policy