Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— |
perl_zeichenketten_bearbeiten [2015/06/01 09:18] (aktuell) admin angelegt |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Zeichenketten bearbeiten ====== | ||
+ | ===== split ===== | ||
+ | |||
+ | Die split-Funktion unterteilt einen String an definierten Stellen und kopiert die Teile in einen Array. Diese Funktion verwendet reguläre Ausdrücke für die Trennstellen und splittet die $_-Variable, falls nichts anderes spezifiziert wird. | ||
+ | |||
+ | <code perl> | ||
+ | $info = "Teo:Test:Testpilot:Musterstraße 4711"; | ||
+ | @personal = split(/:/, $info); | ||
+ | </code> | ||
+ | |||
+ | Dies ist gewissermaßen gleichbedeutend mit: | ||
+ | <code perl> | ||
+ | @personal = ("Teo", "Test", "Testpilot", "Musterstraße 4711"); | ||
+ | </code> | ||
+ | |||
+ | Falls die Information in der $_-Variablen gespeichert ist: | ||
+ | <code perl> | ||
+ | @personal = split(/:/); | ||
+ | </code> | ||
+ | |||
+ | Falls die einzelnen Felder durch eine beliebige Anzahl von Doppelpunkten unterteilt sind, kann ein regulärer Ausdruck verwendet werden. | ||
+ | |||
+ | <code perl> | ||
+ | $_ = "Tim:Taylor::Heimwerkerkönig:::Hollywood 1"; | ||
+ | @personal = split(/:+/); | ||
+ | |||
+ | # bedeutet das gleiche wie | ||
+ | |||
+ | @personal = ("Tim", "Taylor", | ||
+ | "Heimwerkerkönig", "Hollywood 1"); | ||
+ | |||
+ | # Abgrenzung zu Split | ||
+ | $_ = "Tim:Taylor::Heimwerkerkönig:::Hollywood 1"; | ||
+ | @personal = split(/:/); | ||
+ | den folgenden Array ergeben: | ||
+ | @personal = ("Tim", "Taylor", | ||
+ | "Heimwerkerkönig", "", "", "Hollywood 1"); | ||
+ | </code> | ||
+ | |||
+ | Man kann auch ein Wort in Buchstaben bzw. einen Satz in Wörter sowie einen Paragraph in Sätze aufgeteilen: | ||
+ | |||
+ | <code perl> | ||
+ | @chars = split(//, $word); | ||
+ | @words = split(/ /, $sentence); | ||
+ | @sentences = split(/\./, $paragraph); | ||
+ | </code> | ||
+ | |||
+ | Im ersten Fall wird der Null-String zwischen jedem Buchstaben erkannt, deshalb ist der @chars-Array ein Array von Buchstaben, dh. ein Array von Strings der Länge 1. | ||
+ | |||
+ | ===== substr ===== | ||
+ | |||
+ | Eine weitere Möglichkeit um Zeichenketten zu bearbeiten, ist die substr-Funktion | ||
+ | |||
+ | <code perl> | ||
+ | substr("Once upon a time", 3, 4); # returns "e up" | ||
+ | substr("Once upon a time", 7); # returns "on a time" | ||
+ | substr("Once upon a time", -6, 5); # returns "a tim" | ||
+ | </code> | ||
+ | |||
+ | Das erste Beispiel ergibt einen Substring der Länge 4, welcher an der 3. Stelle beginnt. Beachte, dass der erste Buchstaben eines Strings den Index 0 hat! | ||
+ | Beim zweiten Beispiel wird der letzte Parameter, die Länge des Substrings, weggelassen. Das Resultat ist ein Substring, welcher von der angegebenen Stelle bis zum Ende des Strings reicht. | ||
+ | Das dritte Beispiel benützt einen negativen Index. Es ergibt einen Substring, der an der 6. Stelle vom Ende des Strings an 5 Buchstaben lang ist. | ||
+ | |||
+ | Falls der negative Index vor den Anfang des Stringes zeigt, wird Perl nichts zurückgeben und eine Warnung ausgeben. Um das zu vermeiden, kann man einen String verlängern unter Verwendung des x-operators, den wir früher erwähnt haben. Zum Beispiel erzeugt der Ausdruck (" "x30) erzeugt 30 Leerzeichen. |