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 ``
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.
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.
"#{<Ausdruck>}"