Wir haben schon gelernt, dass man Strings (Zeichenketten) mit dem Stringverkettungsoperator &
zusammenhängen kann. In den folgenden Beispielen sehen wir uns an, wie man Strings zerlegen kann.
Mit der Funktion StringLeft()
kann man sich Zeichen vom Beginn einen Strings, also vom linken Ende, holen. Als Parameter benötigt die Funktion logischerweise den String, von dem man die Zeichen haben möchte, und als zweiten Parameter die Anzahl der Zeichen, die man haben möchte. In folgendem Beispiel holt man sich einma die ersten 3 Zeichen, und einmal die ersten 6 Zeichen:
$Name="Max Mustermann" ConsoleWrite( $Name ) ConsoleWrite( @CRLF ) ConsoleWrite( StringLeft( $Name, 3 ) ) ConsoleWrite( @CRLF ) ConsoleWrite( StringLeft( $Name, 6 ) )
Max Mustermann Max Max Mu
Man kann sich auch Zeichen vom Ende des Strings, also vom rechten Ende, holen. Das macht die Funktion StringRight()
:
ConsoleWrite( StringRight( $Name, 4 ) )
mann
Möchte man einen Teilstring aus der Mitte, kann man die Funktion StringMid()
dafür verwenden. Im Beispiel: ab dem 5. Zeichen einen Teilstring der Länge 6.
ConsoleWrite( StringMid( $Name, 5, 6 ) )
Muster
Weil wir gerade über Länge von Strings sprechen:
ConsoleWrite( StringLen( $Name ) )
14
Dann üben wir gleich nocheinmal das Zusammensetzen von Strings, indem wir statt eines lapidaren 14
eine schöne aussagekäftige Meldung ausgeben lassen:
ConsoleWrite( "Anzahl der Zeichen im String '" ) ConsoleWrite( $Name ) ConsoleWrite( "': " ) ConsoleWrite( StringLen( $Name) ) ConsoleWrite( @CRLF )
Anzahl der Zeichen im String 'Max Mustermann': 14
Wenn man nicht so viele ConsoleWrite
s schreiben will, kann man die Ausgabe auch mit &
zu einem einzigen String zusammenhängen und mit einem einzigen ConsoleWrite()
ausgeben lassen:
$Name="Max Mustermann" ConsoleWrite( "Anzahl der Zeichen im String '" & $Name & "': " & StringLen( $Name) & @CRLF)
Mit der Funktion StringInStr()
kann man einen Teilstring in einem String suchen lassen, und erhält die Position zurück. Im Beispiel soll die Position des Leerzeichens im String "Max Mustermann" ermittelt werden. Sie können nachzählen, oder die Positionsnummern anzeigen lassen, um das deutlicher zu machen.
ConsoleWrite ( "123456789012345" & @CRLF ) ; damit wir optisch die Position feststellen können $Name = "Max Mustermann" ConsoleWrite ($Name & @CRLF ) ConsoleWrite( "Position des Leerzeichens: " ) ConsoleWrite( StringInStr( $Name, " " ) ) ConsoleWrite( @CRLF)
123456789012345 Max Mustermann Position des Leerzeichens: 4
Wir haben gelernt, dass wir uns mit der Funktion StringLeft()
die ersten Zeichen eines Strings holen können. Die nächste Aufgabe ist, eine Schleife zu schreiben, die 1.) das erste Zeichen, 2.) die ersten beiden Zeichen, 3.) die ersten drei Zeichen … eines gegebenen Strings ausgibt.
Max Mustermann 1.) M 2.) Ma 3.) Max 4.) Max 5.) Max M 6.) Max Mu 7.) Max Mus 8.) Max Must 9.) Max Muste 10.) Max Muster 11.) Max Musterm 12.) Max Musterma 13.) Max Musterman 14.) Max Mustermann
Wahrscheinlich haben Sie für einen ersten Versuch die Anzahl der Zeichen in Max Mustermann
abgezählt und eine For $i=1 to 14
umgesetzt. Wenn Sie nun andere Namen verwenden, werden Sie feststellen, dass die Schleife entweder zu oft oder zuwenig oft durchlaufen wird. Wäre es nicht elegant, wenn Sie das nicht selbst abzählen müssten, sondern wenn das Programm das erledigen könnte? Kann es auch, wir haben dazu die Funktion StringLen()
kennen gelernt.
Ein String soll in die einzelnen Zeichen zerlegt werden. Lassen Sie jedes Zeichen in einer neuen Zeile ausgeben. Das sieht dann folgendermaßen aus:
M a x M u s t e r m a n n
Von einem gegebenen String soll 1.) das erste Zeichen und ein Leerzeichen, 2.) das zweite Zeichen und ein Leerzeichen, 3.) das dritte Zeichen und ein Leerzeichen, … ausgegeben werden. Das sieht dann folgendermaßen aus:
Max Mustermann M a x M u s t e r m a n n
Zerlegen Sie einen Namen (z.B. "Max Mustermann") in Vorname und Nachname, wobei das Leerzeichen das Trennzeichen ist.
Sie haben schon gelernt, dass man mit der Funktion StringInStr()
die Position des Leerzeichens ermitteln kann. Im Beispiel sollte das 4
ergeben.
Den Vornamen können Sie erhalten, wenn Sie mit StringLeft()
die ersten 3 Zeichen zurückgeben lassen. Die Länge 3 können Sie errechnen lassen, indem Sie von der Position des Leerzeichens 1 subtrahieren.
Den Nachnamen können Sie erhalten, wenn Sie mit StringRight()
die letzen 10 Zeichen zurückgeben lassen. Die Länge 10 können Sie errechnen lassen, indem Sie von der Gesamtlänge des Strings (14) die Position des Leerzeichens (4) subtrahieren.
12345678901234 Max Mustermann Vorname : Max Nachname: Mustermann
Zerlegen Sie eine E-Mail-Adresse (z.B. "max.mustermann@mail.com") anhand des @
.
12345678901234567890123 max.mustermann@mail.com max.mustermann mail.com
Führende Nullen
Die Zahlen von 1 bis 12 sollen mit führender Null ausgegeben werden, sodass sie schön untereinander stehen, z.B.:
... 007 008 009 010 011 012
Wie kann man das erreichen?
Nehmen Sie einfach einen String mit Nullen, hängen Sie die Zahl daran, und nehmen Sie vom Ergebnis die rechtesten 2 (oder 3 ) Zeichen.
StringRight( "000" & $i, 3)