Entfernen Sie alle ANSI-Farben/styles von strings
Ich nutzen Sie die Bibliothek, fügt ANSI-Farben /styles die Saiten. Zum Beispiel:
> "Hello World".rgb(255, 255, 255)
'\u001b[38;5;231mHello World\u001b[0m'
> "Hello World".rgb(255, 255, 255).bold()
'\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m'
Wenn ich das mache:
console.log('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m')
einen "Hello World"
weiß und Fett-Meldung ausgegeben wird.
Dass ein string wie '\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m'
wie können diese Elemente entfernt werden?
foo('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m') //=> "Hello World"
Vielleicht eine gute regulärer Ausdruck? Oder gibt es eine integrierte Funktion?
Die Arbeit, die ich dachte, war zu create child process:
require("child_process")
.exec("node -pe \"console.error('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m')\""
, function (err, stderr, stdout) { console.log(stdout);
});
Aber die Ausgabe ist die gleiche...
- Sie sollten Kreide. Es prüft, für Farben, die aktiviert wird oder nicht, und wird automatisch Streifen ANSI-codes aus dem text.
- Es geht nicht um Design, es geht um unstyling -- entfernen der ANSI Stile von strings. Zum färben verwende ich
couleurs
und für unstyling ichansi-parser
. Hoffe es ist jetzt klarer. I use a library that adds ANSI colors / styles to strings
Und ich werde sagen, indem Sie mit Kreide, können Sie entfernen Sie diese codes automatisch, wenn Sie so wählen (d.h. Sie können Stil und automatisch entfernen).- Ah, ich habe es. Ich dachte
chalk
ist nur für die Färbung. Von dem, was ich sehe,strip-ansi
ist für diese verwendet, und Sie sind einer der Mitwirkenden. 🙂 Schön! - Ich jetzt bin; war nicht, als ich ursprünglich gepostet haha. Kam zurück und aktualisieren Sie die regex mit der, die ich schrieb für die
ansi-regex
. - Sie aktualisieren Ihre Antwort einschließlich der
strip-ansi
Paket. Ich mochte immer klein und Niedlich npm-Pakete. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den regex-du sollte verwenden ist
Diese Spiele die meisten ANSI-escape-codes, die nicht nur die Farben, einschließlich der erweiterten VT100-codes, archaisch/proprietäre Drucker-codes, etc.
Beachten Sie, dass die
\u001b
im obigen regex funktioniert möglicherweise nicht für Ihre spezielle Bibliothek (obwohl es sollte), check-out meine Antwort auf eine ähnliche Frage in Bezug auf akzeptable escape-Zeichen, wenn nicht.Wenn Sie nicht wie regexes, können Sie immer die
strip-ansi
Paket.Beispielsweise die Zeichenfolge
jumpUpAndRed
unten enthält ANSI-codes für das springen in die Vorherige Zeile, schreiben einige rote text, und dann gehen Sie zurück an den Anfang der nächsten Zeile - von denen verlangen Suffixe anderen alsm
.JS:
Escape-Zeichen ist
\u001b
, und die Sequenz von[
bis zum erstenm
Auftritt, ist das styling. Sie brauchen nur zu entfernen. So ersetzen Sie Global über die folgenden Muster:So,