WieUmwandlung multline String Array
mehrzeiligen String Array konvertierenmy $text= " ads da
sda
s
da
d
as
das
d a as dasd
\n
";
Anmerkung: Ich möchte nicht Newline entfernen oder löschen?
WieUmwandlung multline String Array
mehrzeiligen String Array konvertierenmy $text= " ads da
sda
s
da
d
as
das
d a as dasd
\n
";
Anmerkung: Ich möchte nicht Newline entfernen oder löschen?
Sie auf die Anfänge der Linien unter Verwendung des ^
metacharacter gespalten könnte und der m
Regexp-Modifikator (lassen Sie ^
den Anfang der Zeile statt nur den Anfang übereinstimmen der string):
split /^/m, $text
Eigentlich kann man die m
seit split
bringt es auf für Sie in diesem Fall auslassen. Von perldoc -f split
: "Ein Muster von"/^/"wird behandelt, als ob es"/^/m "wäre, da es sonst nicht viel verwendet wird."
Arbeiten mit dem Wert für $text
, diesen Code:
use Data::Dumper;
$Data::Dumper::Useqq=1;
print Data::Dumper->Dump([[split /^/, $text]], ["*text"]);
Drucke diese:
@text = (
" ads da\n",
"sda\n",
"s \n",
"da\n",
"d\n",
"as\n",
"\n",
"das\n",
"d a as dasd\n",
"\n",
"\n",
"\n"
);
So wie es aussieht, könnte die Frage klarer formuliert werden.
my @text = split "\n", $text;
Wenn man bedenkt, dass das erste Argument split
ein Muster ist:
#!/usr/bin/perl
use strict; use warnings;
use YAML;
my $text = " ads da
sda
s
da
d
as
das
d a as dasd
\n
";
print Dump [ split /(\n)/, $text ];
Ausgang:
--- - ' ads da' - "\n" - sda - "\n" - s - "\n" - da - "\n" - d - "\n" - as - "\n" - '' - "\n" - das - "\n" - d a as dasd - "\n" - '' - "\n" - '' - "\n" - '' - "\n"
Mein Gefühl ist man auf dem falschen Problem konzentrieren.
Anstatt zu versuchen, eine skalare mehrzeilige String-Konstante in eine Liste zu konvertieren, sollte Ihre Frage vielleicht lauten: "Wie kann ich eine mehrzeilige Zeichenkette in eine Perl-Liste oder ein Array initiieren?"
Betrachten Sie Perls List value constructors in Perldata.
Von besonderer Anwendbarkeit auf Ihre Frage ist, wie man eine heredoc verwenden, um ein Array mit einem mehrzeiligen Zeichenfolge zu initiieren:
#!/usr/bin/perl
use strict; use warnings;
use YAML;
my @text= <<END =~ m/(^.*\n)/mg;
ads da
sda
s
da
d
as
das
d a as dasd
\n
END
print Dump \@text;
Drucke:
---
- " ads da\n"
- "sda\n"
- "s \n"
- "da\n"
- "d\n"
- "as\n"
- "\n"
- "das\n"
- "d a as dasd\n"
- "\n"
- "\n"
- "\n"
Mit den Idiomen Luke!
Ich hatte Spaß beim Zusammensetzen: Voila! Ihre Saite ist jetzt auch ein Array ohne split
-ting es:
use strict qw<subs vars>;
use warnings;
@{" ads da
sda
s
da
d
as
das
d a as dasd
\n
"} = 1..3
;
Dies ist eine schlechte Frage. Definieren Sie Ihren Umfang klarer. Was enthält die Zeichenfolge? Ist das ein wörtliches "\ n"? Möchten Sie Leerzeilen ignorieren? – Zaid
ich möchte nicht neue Zeile und leere Zeilen entfernen ... – Tree
also was willst du aufteilen? – Ether