next up previous contents index
Search Next: Mit Strings arbeiten Up: Zeichenketten, Strings Previous: String-Literale   Contents   Index


Indizierung

Die Länge von Strings erhält man durch Aufruf der Methoden length oder size, die für Strings identisch sind.
s=""
s.length      #-> 0
"Ruby".size   #-> 4

Durch den Operator [] kann man auf Teile eines Strings zugreifen.

Die Zählung der Offsets beginnt bei positiven Indizes von vorne, bei negativen von hinten, wobei $-1$ den letzten Buchstaben im String bezeichnet.

"ABC"[0]      #-> 65
"ABC"[2]      #-> 67
"ABC"[-1]     #-> 67


\epsfig{height=36pt,file=images/chan.eps}s[0][*] bezieht sich auf den ersten Buchstaben und nicht das erste Byte in der Zeichenkette. Das wird dann wichtig, wenn man mit Multibyte-Kodierungen (UTF-8, SJIS, ...) arbeitet. \epsfig{height=10pt,file=images/ruby.eps}

Wird in den eckigen Klammern[*] ein Bereich festgelegt, können dabei positive und negative Indizes beliebig gemischt werden. Sollte allerdings das Ende vor dem Anfang zu liegen kommen, wird nil zurückgegeben.

"abcde"[1..3]    #-> "bcd"
"abcde"[1..-2]   #-> "bcd"
"abcde"[-4..-2]  #-> "bcd"
"abcde"[-4..3]   #-> "bcd"
"abcde"[4..-3]   #-> nil

Dabei ist die Indizierung 1..3 keine spezielle Syntax, es wird in der Tat eine Range (Wertebereich)-Instanz (siehe Kapitel 8 auf Seite [*]) verwendet, so dass noch eine andere Varianten auftreten kann.

"abcde"[1..3]    #-> "bcd"
"abcde"[1...3]   #-> "bc"

Schließlich gibt es noch die Möglichkeit, Anfang und Größe des gewünschten Teilstrings festzulegen:

"abcde"[1,3]     #-> "bcd"
"abcde"[3,3]     #-> "de"



Footnotes

... s[0][*]
Erster Buchstabe
... Klammern[*]
str[0..-1]==str

next up previous contents index
Search Next: Mit Strings arbeiten Up: Zeichenketten, Strings Previous: String-Literale   Contents   Index
(C) 2002 by dpunkt.de, Armin Roehrl, Stefan Schmiedl, Clemens Wyss 2002-01-20