Wie bearbeite ich eine feste Stelle an einem String?
(
Autor: Ishka & perl.de - Community)
Ich habe einen String(z.B. eine URL), und möchte eine bestimmte Anzahl Zeichen
auslesen, bzw. Löschen. Wie mache ich das?
$string='http://www.perl.de';
print substr($string, 0, 4); # "http"
print substr($string, 7); # "www.perl.de"
print substr($string, -7, 4); # "perl"
Erklärung:
Die Funktion substr (Sinngemäß übersetzt: teilzeichenkette) ist ein sehr
mächtiges Werkzeug, um konnstannte Stellen von strings auszulesen, aber auch, um sie zu
beschreiben. Zum Auslesen von Werten kann substr auf zwei Weisen
verwendet werden:
print substr('http://www.perl.de', 0, 4);
hier liest die Funktion substr von der Stelle 0 an 4 Zeichen ein. Daher erfolgt hier die Ausgabe "http".
Die andere Möglichkeit ist so:
print substr('http://www.perl.de', 7);
Hier wird von der Position 7 an der String bis zum Ende zurückgegeben, also in dem Beispiel
"www.perl.de".
Es gibt noch eine kleine Variante zur angabe der Startposition:
print substr('http://www.perl.de', -7, 4);
hier erfolgt die angabe des ersten Zeichens mit einer negativen Zahl. Das wird von Perl
interpretiert als soundsovielstes Zeichen von hinten. Daher wird der Ausdruck in dem Beispiel
"perl" ausgeben.
Doch das ist noch nicht alles, was die Funktion substr kann.
$string = 'It is a Small World.';
substr($string, 8, 5) = 'Perl';
print $string; # It is a Perl World.
substr($string, 7, 0) = ' big';
print $string; # It is a big Perl World.
substr($string, -1, 1) = '!';
print $string; # It is a big Perl World!
Erklärung:
hier wird die Funktion substr verwendet, um an eine Stelle im String etwas zu schreiben.
substr($string, 8, 5) = 'Perl';
schreibt in den String $string (der zuvor auf "It is a Small World." gesetzt wurde) an die Stelle 8 den
String "Perl". Allerdings fügt er ihn nicht einfach ein, sondern überschreibt dabei 5 Zeichen,
da die 5 als dritter Parameter eingesetzt ist.
substr($string, 7, 0) = ' big';
Um keine Zeichen (d.h. 0 Zeichen) zu überschreiben, muß eine 0 angegeben werden.
Allerdings wird ein fehlender dritter Parameter ebenfalls als 0 interprtiert.
substr($string, -1, 1) = '!';
Und auch hier lassen sich negative Zahlen als Positionsangabe verwenden.
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden:
---### Main.??? - 14 Jul 2003 - Betreff