Teile eines Strings entfernen
Chris Weber
- perl
0 Erik Tews0 Cheatah0 Jörk Behrends0 Cheatah
Hallo,
sagen wir mal ich haette einen String in einer Variable gespeichert:
$wert = "hallo=wie?geht+s-denn%so";
Die ganzen Zeichen sind vielleicht ein wenig uebertrieben, aber nur fuer alle Faelle. Wie kann ich mit Perl Teile von String entfernen, vorne sowie hinten ? Zum Beispiel alles vor dem "=" und alles nach dem "%" soll weg. Wie geht das ?
Danke
Hallo,
sagen wir mal ich haette einen String in einer Variable gespeichert:
$wert = "hallo=wie?geht+s-denn%so";
Die ganzen Zeichen sind vielleicht ein wenig uebertrieben, aber nur fuer alle Faelle. Wie kann ich mit Perl Teile von String entfernen, vorne sowie hinten ? Zum Beispiel alles vor dem "=" und alles nach dem "%" soll weg. Wie geht das ?
Wenn du alles nach % weghaben willst, solltest du es mit substr und index machen. Wenn du alle % aus dem String raus haben willst, kanns du es mit $String =~ s/%//g; machen.
Hi,
sagen wir mal ich haette einen String in einer Variable gespeichert:
$wert = "hallo=wie?geht+s-denn%so";
Die ganzen Zeichen sind vielleicht ein wenig uebertrieben, aber nur fuer alle Faelle. Wie kann ich mit Perl Teile von String entfernen, vorne sowie hinten ? Zum Beispiel alles vor dem "=" und alles nach dem "%" soll weg. Wie geht das ?
alles vor dem "=" (einschl.):
$wert =~ s/^.*=//;
Alles nach dem "%" (einschl.):
$wert =~ s/%.*$//;
Alles bis auf das zwischen "=" und "%":
$wert =~ s/^.*=(.*)%.*$/$1/;
Stichwort: Reguläre Ausdrücke. Du kannst auch z.B. mit ($name, $inhalt) = split(/=/,$wert); den String aufspalten, so daß $name="hallo" und $inhalt="wie?geht+s-denn%so"
Cheatah
Hallo!
Stichwort: greedy - das Sternchen ist ein Vielfraß ...
$wert = "hallo=wie?geht+s-denn%so";
Anderes Bsp: $wert = "hallo=wie?geht+=s-euch%allen!denn%so";
alles vor dem "=" (einschl.):
$wert =~ s/^.*=//;
Wird zu "s-euch%allen!denn%so"
Alles nach dem "%" (einschl.):
$wert =~ s/%.*$//;
Wird zu "s-euch"
Hinter * ein Fragezeichen setzen sollte dieses Verhalten ändern (falls gewünscht)
Alles bis auf das zwischen "=" und "%":
$wert =~ s/^.*=(.*)%.*$/$1/;
$wert =~ s/^.*?(.*)%.*?$/$1/;
Jörk
Hi,
$wert = "hallo=wie?geht+s-denn%so";
Anderes Bsp: $wert = "hallo=wie?geht+=s-euch%allen!denn%so";
okay, wenn das möglich ist muß man natürlich leicht korrigieren.
alles vor dem "=" (einschl.):
$wert =~ s/^.*=//;Wird zu "s-euch%allen!denn%so"
$wert =~ s/^.*?=//;
Alles nach dem "%" (einschl.):
$wert =~ s/%.*$//;Wird zu "s-euch"
Ebenfalls ein ? hinter dem Sternchen einfügen.
Hinter * ein Fragezeichen setzen sollte dieses Verhalten ändern (falls gewünscht)
Genau :-)
Zum split-Befehl:
($name, $inhalt) = split(/=/,$wert,2);
sorgt dafür, daß nur am ersten "=" aufgesplittet wird.
Cheatah