Die Programmiersprache Ruby (German Edition)
Zeilenumbrüche (\n, \r oder \r\n) am Ende.
s = "Hallo\n"
s.chop! # => "Hallo": Zeilenumbruch entfernt, s verändert
s.chop # => "Hall": letztes Zeichen entfernt, s nicht verändert
"".chop # => "": keine Zeichen entfernt
"".chop! # => nil: nichts verändert
# Entferne allen Leerraum (einschließlich \t, \r, \n) von links, rechts oder beidem
# strip!, lstrip! und rstrip! verändern den String.
s = "\t Hallo \n" # Leerraum am Anfang und Ende
s.strip # => "Hallo"
s.lstrip # => "Hallo \n"
s.rstrip # => "\t Hallo"
# Richte einen String linksbündig, rechtsbündig oder zentriert in einem Feld mit
# n Zeichen aus. Es gibt keine verändernden Versionen dieser Methoden.
# Siehe auch die Methode printf.
s = "x"
s.ljust(3) # => "x "
s.rjust(3) # => " x"
s.center(3) # => " x "
s.center(5, '-') # => "--x--": Statt Leerzeichen ein anderes Zeichen nutzen
s.center(7, '-=') # => "-=-x-=-": Mehrere Füllzeichen erlaubt
Strings können Byte für Byte oder Zeile für Zeile mit den Iteratoren
each_byte
und
each_line
enumeriert werden. In Ruby 1.8 ist die Methode
each
ein Synonym für
each_line
, und die Klasse
String
bindet
Enumerable
ein. Vermeiden Sie aber,
each
und die dazugehörigen Iteratoren zu verwenden, da Ruby 1.9 die Methode
each
entfernt und die Strings nicht mehr mit
Enumerable
verbunden sind. Ruby 1.9 (und die Bibliothek
jcode
in Ruby 1.8) fügen einen Iterator
each_char
hinzu und ermöglichen die Enumeration von Strings Zeichen für Zeichen:
s = "A\nB" # Drei ASCII-Zeichen auf zwei Zeilen
s.each_byte {|b| print b, " " } # Ausgabe: "65 10 66 "
s.each_line {|l| print l.chomp} # Ausgabe: "AB"
# Sequenzielle Iteration über die Zeichen als Einzeichen-Strings
# Läuft in Ruby 1.9 oder in 1.8 mit der Bibliothek jcode:
s.each_char { |c| print c, " " } # Ausgabe: "A \n B "
# Enumeriere jedes Zeichen als Einzeichen-String
# Das funktioniert nicht für Multibyte-Strings in 1.8
# Es läuft (ineffizient) für Multibyte-Strings in 1.9:
0.upto(s.length-1) {|n| print s[n,1], " "}
# In Ruby 1.9 sind bytes, lines und chars Aliase
s.bytes.to_a # => [65,10,66]: Alias für each_byte
s.lines.to_a # => ["A\n","B"]: Alias für each_line
s.chars.to_a # => ["A", "\n", "B"]: Alias für each_char
String
definiert auch Methoden für das Parsen von Zahlen aus Zeichenketten und für das Konvertieren von Zeichenketten in Symbole:
"10".to_i # => 10: wandelt String in Integer
"10".to_i(2) # => 2: Argument ist Basis: zwischen Base-2 und Base-36
"10x".to_i # => 10: Nicht numerisches Suffix wird ignoriert. Auch für oct, hex
" 10".to_i # => 10: führender Leerraum wird ignoriert
"ten".to_i # => 0: wirft keine Exception bei ungültigem Inhalt
"10".oct # => 8: parst Strings als oktalen Wert
"10".hex # => 16: parst String als hexadezimalen Wert
"0xff".hex # => 255: hexadezimale Zahlen können mit 0x beginnen
" 1.1 dozen".to_f # => 1.1: parst Gleitkommazahl am Anfang
"6.02e23".to_f # => 6.02e+23: Exponentialnotation erlaubt
"one".to_sym # => :one -- Umwandlung String in Symbol
"two".intern # => :two -- intern ist ein Synonym für to_sym
Schließlich sehen Sie hier noch ein paar weitere Methoden von
String
:
# "Erhöhe" String:
"a".succ # => "b": der Nachfolger von "a". Es gibt auch succ!
"aaz".next # => "aba": next ist ein Synonym. Es gibt auch next!
"a".upto("e") {|c| print c } # Ausgabe "abcde". upto-Iterator basiert auf succ.
# String umdrehen:
"Hallo".reverse # => "ollaH". Es gibt auch reverse!
# Debuggen
"Hallo\n".dump # => "\"Hallo\\n\"": Sonderzeichen mit Escape-Zeichen
"Hallo\n".inspect # Funktioniert etwa so wie dump
# Umwandlung eines Sets von Zeichen in ein anderes
"Hallo".tr("aeiou", "AEIOU") # => "HEllO": Vokale in Großbuchstaben. Es gibt auch tr!
"Hallo".tr("aeiou", " ") # => "H ll ": Wandelt Vokale in Leerzeichen um
"Heinz".tr_s("aeiou", " ") # => "H nz": Umwandeln und doppelte entfernen
# Checksummen
"hello".sum # => 532: schwache 16-Bit-Checksumme
"hello".sum(8) # => 20: 8-Bit-Checksumme statt 16-Bit
"hello".crypt("ab") # => "abl0JrMf6tlhw": kryptographische Einweg-Checksumme
# Übergib zwei Buchstaben als "Salt"
# Das Ergebnis kann plattformabhängig sein
# Zählen von Zeichen, Löschen von Zeichen, Entfernen von Doppelten
"Hallo".count('aeiou') # => 2: kleine Vokale zählen.
"Hallo".delete('aeiou') # => "Hll": kleine Vokale löschen. Es gibt auch delete!
"Hallo".squeeze('a-z') # => "Halo": Entferne doppelte Zeichen. Es gibt auch squeeze!
# Wenn es mehr als ein Argument gibt, nimm die Schnittmenge.
# Argumente, die mit einem
Weitere Kostenlose Bücher