ruby-mine

exploring the mine

Rubinrote Strings - Teil 1: String.inspect

von murphy am 19.03.2006 (21 Uhr)

Syntax-Sonntag! Heute geht es um Strings (Zeichenketten). Ruby hat einiges zu bieten:

Normale Strings

'Die Zeichen \\\\ und \\' muss man escapen.'

Hier passiert nicht viel. Wenn man nichts besonderes vorhat, sollte man diese Variante benutzen. Besonders dann, wenn normale \-Zeichen gebraucht werden:

p File.size('C:\\games\\Diablo II\\Screenshot006.jpg')

Ich sehe häufig, dass sich die Leute hier mit Doppel-Backslashs abkämpfen - unnötig, denn einfache Anführungszeichen betrachten Backslashes als Klartext, solange kein ' oder \ folgt.

Interpretierte Strings

"Ich kenne \\n, \\t, \\x20, aber auch #{inline code},\\
#$globale und #@instanzvariablen."

Alle Ruby-Strings können mehrzeilig sein; bei interpretierten Strings kann man den Zeilenwechsel maskieren, er wird dann gelöscht.

Ein heißes Thema, was in solchen Strings alles interpretiert wird. Mir sind bekannt:

Sonderformen

Zwei Abarten von Strings sind Reguläre Ausdrücke und akzentuierte Strings:

Fancy Strings

Mithilfe von %-Codes kann man in Ruby all diese Stringsorten erzeugen und dabei beliebige Zeichen als Begrenzer wählen:

%q<I'm a string with "-quotes and a \\\\>

Diese kleinen Helfer sind sehr nützlich und interessant. Darum geht es am nächsten Sonntag.

Heredocs

Heredocs sind beängstigende mehrzeilige Strings, die mit vertikalen Anführungszeichen arbeiten:

pattern = Regexp.new(<<-'EOP'.gsub(/\\w/, '\\w').gsub(/\\s+/, '\\s*'))
        (w w w)
        (w w w)
        (w w w)
(r r r) (g g g) (b b b) (o o o)
(r r r) (g g g) (b b b) (o o o)
(r r r) (g g g) (b b b) (o o o)
        (y y y)
        (y y y)
        (y y y)
EOP

Hier wird der Code plötzlich zweidimensional (das Here-Dokument geht in die Höhe), und alles wird komplizierter. Am übernächsten Sonntag gibt es mehr dazu.

DATA

Für kurze Skripte benutze ich sehr gerne DATA:

p DATA.read.scan(/\\d+/).inject(0) { |sum, s| sum + s.to_i }
__END__
Summiere folgende Zahlen:
23 22 25 26
32
5 22 32 14 15 29 27 18

Auf diese Art kann man sich ein Heredoc sparen und die Daten übersichtlich am Ende der Datei einfügen. Kommt wohl noch aus BASIC.

Viel Spaß mit Ruby!


Kommentar schreiben

Name (notwendig)

Mail (wird nicht veröffentlicht)

Webseite


Kommentare

  1. Ruby-Mine &raquo; Blog Archive &raquo; [2050°C] Der Anfang schrieb am 20.04.2006 (02 Uhr)

    [...] Murphy hat Euch in den letzten Wochen, einen tiefen Einblick in die syntaktischen Finessen von Ruby geliefert. Ihr habt normale Strings und Fancy Strings kennengelernt. Es stellte sich heraus, dass Here Docs ebenfalls nur Strings, mit einer zusätzlichen Dimension, sind. Die funktionale Programmierung mit proc Objekten macht Euch das Leben um einiges leichter. Und ein exception handling mit rescue ist nun zu einem selbstverständlichen Codefragment geworden, welches jeden unsicheren Code schmückt. Parallel hierzu möchten wir euch nun auf einer neuen Ebene einen Einblick in unseren Rubin verschaffen. Hierzu fahren wir die Schmelzanlage auf knapp 2050°C hoch und schauen uns an, was sich im inneren des Edelsteins befindet. [...]