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
      

UtilFaqSubForm edit

Titel Wie bearbeite ich eine feste Stelle an einem String?
Autor Ishka & perl-community
Bereich FaqStrings
Topic revision: 2006-05-06, TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.