next up previous contents index
Search Next: Indizierung Up: Zeichenketten, Strings Previous: Zeichenketten, Strings   Contents   Index

String-Literale

Bei der Verwendung von Strings im Quelltext (Literale) entscheidet die Begrenzung der Zeichenkette - wie auch in Perl - darüber, wie Sonderzeichen und Sondersequenzen von Ruby behandelt werden.

Verwendet[*]man das einfache Anführungszeichen ', so werden die Inhalte wörtlich übernommen. Mit \' wird ein einzelner Apostroph eingefügt.

'Guten Morgen'      #-> Guten Morgen
'Guten Morgen\n'    #-> Guten Morgen\n
'Wie geht\'s'       #-> Wie geht's

Wenn die doppelten Anführungszeichen[*] zum Einsatz kommen, legt Ruby noch Hand an. Nicht nur die aus C bekannten Sonderzeichen wie ``$\backslash$n'' (Zeilenumbruch) werden korrekt interpretiert, besonders bequem sind die #-Ausdrücke: "#{<Ausdruck>}"[*]. Dabei wird der (beliebig komplexe) Ruby-Ausdruck in den geschweiften Klammern durch das Ergebnis seiner Auswertung ersetzt.

"5 + 5 = #{5 + 5}"    #-> "5 + 5 = 10"
meinName = 'Tarzan'
"Ich #{meinName}"     #-> "Ich Tarzan"

Ebenso wie Perl bietet Ruby noch eine andere Möglichkeit, konstante Strings in den Quellcode einzubetten, die besonders dann interessant ist, wenn der Text Anführungszeichen enthält:

%q(Guten Morgen\n)    #-> Guten Morgen\n
%q['"(\)"']           #-> '"(\)"'
%q/'"[\)"'/           #-> '"[\)"'

Neben der Variante mit einer öffnenden und schließenden Klammer kann man auch irgendein Zeichen verwenden, das im String nicht vorkommt. Die Markierung %q entspricht dem Apostroph ', während ein mit %Q bezeichneter String wie bei doppelten Anführungszeichen " interpretiert wird.

Sonderzeichen werden mit einem Backslash \ geschrieben.


Sonderzeichen
Table 4.1: Die wichtigsten Sonderzeichen


\epsfig{height=36pt,file=images/chan.eps}Wenn Strings über mehrere Zeilen laufen sollen, müsste man die enthaltenen Zeilenwechsel mit einem \ maskieren. Um diesen Aufwand zu vermeiden, bietet Ruby folgende Möglichkeiten:

p <<ENDE
F: Was ist 1 + 1 ?
A: #{1+1}
ENDE      #-> "F: Was ist 1 + 1 ?\nA: 2\n"

# oder
p <<'ENDE'
F: Was ist 1 + 1 ?
A: #{1+1}
ENDE      #-> "F: Was ist 1 + 1 ?\nA: #{1+1}\n"

# oder
p <<-ENDE
F: Was ist 1 + 1 ?
  A: #{1+1}
    ENDE  #-> "F: Was ist 1 + 1 ?\n  A: 2\n"

Die Zeichenkette erstreckt sich bis zur nächsten Zeile, in der nur die an << angehängte Markierung steht. Wird die Markierung in einfache Anführungszeichen gesetzt, werden keine Ersetzungen vorgenommen. Die Variante <<- schließlich erlaubt es, die Ende-Markierung einzurücken, wodurch eine übersichtliche Codeformatierung möglich wird. \epsfig{height=10pt,file=images/ruby.eps}



Footnotes

... Verwendet[*]
'Unverändert'
... Anf\"uhrungszeichen[*]
``Interpretiert''
... "#{<Ausdruck>}"[*]
Ruby-Ausdruck in Zeichenkette

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