4 Stimmen

Anzahl der Leerzeichen am Anfang jeder Zeile hinzufügen (innerhalb einer Zeichenfolge)

Dies ist eine Art Folgefrage zu Perl: Zeichen am Anfang einer Zeile hinzufügen .

Die Situation
In einem bestehenden Perl-Skript habe ich eine recht lange Zeichenkette $str mit einer unbekannten Anzahl von Zeilenumbrüchen ( \n ). Am Ende der Zeichenkette befindet sich nun ein Zeilenumbruch.

$str = "Hello\nWorld.\nHow is it going?"

Das Problem
Ich möchte eine bestimmte (konstante) Anzahl von Leerzeichen am Anfang jeder Zeile innerhalb der Zeichenfolge hinzufügen: (in diesem Fall 3)

$str = "   Hello\n   World.\n   How is it going?"

Erster Ansatz Mein erster Ansatz war das folgende RegEx

$str =~ s/(.*?\n)/   \1/g;

Und um die letzte Zeile, die nicht durch eine neue Zeile abgeschlossen wird, zwischenzuspeichern

$str =~ s/(.*)\n(.*)?$/\1\n   \2/g;

Der Wunsch
Erstens. Die obigen Zeilen funktionieren perfekt und tun genau das, was ich beabsichtigte. Aber ich weiß, RegEx sind mächtig und ich bin mir ziemlich sicher, dass man das Gleiche mit einem kurzen RegEx machen kann. Leider ist mir das bisher nicht gelungen. (Es ist sehr wahrscheinlich, dass ich viel zu komplex denke.)

Welche Möglichkeiten gibt es also für dieses Problem?
Ich danke Ihnen für jede Antwort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X