Ruby arbeitet sowohl mit Strings als auch mit numerischen Daten. Strings können in doppelte Anführungszeichen oder in einfache Anführungszeichen eingeschlossen werden.
ruby> "abc" "abc" ruby> 'abc' "abc"
Doppelte und einfache Anführungszeichen haben in einigen Fällen unterschiedliche Auswirkungen. In doppelte Anführungszeichen eingeschlossene Zeilen interpretieren Backslash-Escape-Sequenzen, und # {} wird für Inline-Ausdrücke verwendet. In einfache Anführungszeichen eingeschlossene Zeichenfolgen werden nicht interpretiert; die Sie an den folgenden Beispielen beobachten können:
ruby> print "a\nb\nc","\n" a b c nil ruby> print 'a\nb\n',"\n" a\nb\nc nil ruby> "\n" "\n" ruby> '\n' "\\n" ruby> "\001" "\001" ruby> '\001' "\\001" ruby> "abcd #{5*3} efg" "abcd 15 efg" ruby> var = " abc " " abc " ruby> "1234#{var}5678" "1234 abc 5678"
Rubys Strings werden intelligenter und intuitiver gehandhabt als Cs. Sie können beispielsweise Zeichenfolgen mit + verketten und die Zeichenfolge auch mehrmals mit * wiederholen.
ruby> "foo" + "bar" "foobar" ruby> "foo" * 2 "foofoo"
Das Verketten von Zeichenfolgen ist in C aufgrund der erforderlichen expliziten Speicherverwaltung umständlicher.
char *s = malloc(strlen(s1)+strlen(s2)+1); strcpy(s, s1); strcat(s, s2); /* ... */ free(s);
Aber mit Ruby betrachten wir nicht den Platz, den die Zeichenfolge einnimmt. Wir sind frei von all dieser Speicherverwaltung.
Hier sind ein paar Dinge, die wir mit Strings machen können:
Kleben (Verkettung):
ruby> word = "fo" + "o" "foo"
Wiederholung:
ruby> word = word * 2 "foofoo"
Extrahieren von Symbolen (Beachten Sie, dass Symbole in Ruby ganzzahlige Typen sind):
ruby> word[0] 102 # 102 is ASCII code of `f' ruby> word[-1] 111 # 111 is ASCII code of `o'
(Ein negatives Vorzeichen bedeutet einen Versatz vom Zeilenende, nicht vom Anfang)
Extrahieren von Teilstrings:
ruby> herb = "parsley" "parsley" ruby> herb[0,1] "p" ruby> herb[-2,2] "ey" ruby> herb[0..3] "pars" ruby> herb[-5..-2] "rsle"
Vergleich von Saiten:
ruby> "foo" == "foo" true ruby> "foo" == "bar" false
Hinweis: In Ruby 1.0 werden Vergleichsergebnisse in Großbuchstaben angezeigt, zum Beispiel WAHR .
Lassen Sie uns zunächst einige dieser Funktionen verwenden. Es wird ein Rätsel, erraten Sie das Wort, obwohl das Rätsel für den nächsten Code laut ist.
# save this as guess.rb words = ['foobar', 'baz', 'quux'] secret = words[rand(3)] print "guess? " while guess = STDIN.gets guess.chop! if guess == secret print "You win!\n" break else print "Sorry, you lose.\n" end print "guess? " end print "The word was ", secret, ".\n"
Machen Sie sich vorerst nicht zu viele Gedanken über den Inhalt des Codes und seine Details. Führen Sie einfach das Programm aus und sehen Sie sich das Ergebnis seiner Arbeit an.
% ruby guess.rb guess? foobar Sorry, you lose. guess? quux Sorry, you lose. guess? ^D The word was baz.