Die Programmiersprache Ruby (German Edition)
# zurück.
s.insert(5, " du") # Das Gleiche wie s[5] = " du". Verändert s. Liefert neues s.
s.slice(0,5) # Wie s[0,5]. Liefert einen Substring.
s.slice!(5,3) # Löschen. Wie s[5,3]="". Liefert gelöschten Substring.
s.eql?("Hallo Welt") # True. Wie ==.
Es gibt verschiedene Methoden, die Länge eines String zu ermitteln:
s.length # => 5: zählt Zeichen in 1.9, Bytes in 1.8
s.size # => 5: size ist ein Synonym
s.bytesize # => 5: Länge in Bytes; nur Ruby 1.9
s.empty? # => false
"".empty? # => true
Nun folgen Methoden zum Suchen in einem String und zum Ersetzen von Inhalten. Wir werden einige dieser Methoden nochmals begutachten, wenn wir uns weiter unten reguläre Ausdrücke vornehmen:
s = "Hallo"
# Finde die Position eines Substring oder eines Musters
s.index('l') # => 2: Index des ersten l im String
s.index(?l) # => 2: Funktioniert auch mit Zeichencodes
s.index(/l+/) # => 2: und mit regulären Ausdrücken
s.index('l',3) # => 3: Index des ersten l im String an oder nach Position 3
s.index('Ruby') # => nil: gesuchter String nicht gefunden
s.rindex('l') # => 3: Index des ersten l im String von rechts
s.rindex('l',2) # => 2: Index des ersten l im String von rechts an oder vor 2
# Prüfe auf Präfixe und Suffixe: Ruby 1.9 oder neuer
s.start_with? "Hall" # => true. Achtung: "start", nicht "starts"
s.end_with? "bells" # => false
# Prüfe auf Anwesenheit eines Substring
s.include?("ll") # => true: "Hallo" enthält "ll"
s.include?(?E) # => false: "Hallo" enthält nicht das Zeichen E
# Pattern Matching mit regulären Ausdrücken
s =~ /[aeiou]{2}/ # => nil: kein doppelter Vokal in "Hallo"
s.match(/[aeiou]/) {|m| m.to_s} # => "a": gib ersten Vokal aus
# Aufteilen eines String in Substrings basierend auf Trennzeichen oder Muster
"Das ist es".split # => ["Das", "ist", "es"]: an Leerzeichen trennen
"Hallo".split('l') # => ["Ha", "", "o"]
"1, 2,3".split(/,\s*/) # => ["1","2","3"]: Komma als Trenner, optional mit
# Leerzeichen
# Teile einen String in zwei Teile plus ein Trennzeichen. Nur Ruby 1.9.
# Diese Methode liefert immer ein Array mit 3 Strings:
"Banana".partition("an") # => ["B", "an", "ana"]
"banana".rpartition("an") # => ["Ban", "an", "a"]: von rechts beginnen
"a123b".partition(/\d+/) # => ["a", "123", "b"]: geht auch mit Regexps
# Suche und ersetze das erste (sub, sub!) oder alle (gsub, gsub!)
# Vorkommen des angegebenen String oder Musters.
# Mehr zu sub und gsub bei der Behandlung von regulären Ausdrücken.
s.sub("l", "L") # => "HaLlo": nur das erste Auftreten ersetzen
s.gsub("l", "L") # => "HaLLo": alle Vorkommen ersetzen
s.sub!(/(.)(.)/, '\2\1') # => "aHllo": finde und vertausche die ersten 2 Buchstaben
s.sub!(/(.)(.)/, "\\2\\1") # => "aHllo": doppelte \ für doppelte Anführungsgzeichen
# sub und gsub können auch einen Ersatz-String durch einen Block ermitteln.
# Finde den ersten Buchstaben jedes Worts und schreibe ihn groß
"hallo welt".gsub(/\b./) {|match| match.upcase } # => "Hallo Welt"
Die letzte Zeile dieses Beispiels nutzt die Methode
upcase
, um einen String in Großbuchstaben umzuwandeln. Die Klasse
String
definiert eine Reihe von Methoden, um mit Groß- und Kleinschreibung zu arbeiten (definiert aber keine Methoden, um die Art eines Zeichens zu prüfen):
# Methoden zum Ändern von Groß- und Kleinschreibung
s = "welt" # Diese Methoden arbeiten nur mit ASCII-Zeichen.
s.upcase # => "WELT"
s.upcase! # => "WELT"; s wird verändert
s.downcase # => "welt"
s.capitalize # => "Welt": erster Buchstabe groß, der Rest klein
s.capitalize! # => "Welt": s wird verändert
s.swapcase # => "wELT": Groß-/Kleinschreibung jedes Buchstabens ändern
# Vergleiche ohne Rücksicht auf Groß-/Kleinschreibung (nur ASCII-Texte)
# casecmp funktioniert wie <=> und liefert −1 für kleiner, 0 für gleich, +1 für
# größer.
"welt".casecmp("WELT") # => 0
"a".casecmp("B") # => −1 (<=> liefert hier 1)
String
definiert eine Reihe nützlicher Methoden zum Hinzufügen oder Entfernen von Leerraum. Die meisten Methoden gibt es als verändernde (auf
!
endende) und nicht verändernde Versionen:
s = "Hallo\r\n" # Ein String mit einem Zeilenumbruch
s.chomp! # => "Hallo": entferne einen Zeilenumbruch am Ende
s.chomp # => "Hallo": kein Zeilenumbruch, keine Änderung
s.chomp! # => nil: Rückgabe von nil zeigt, dass es keine Änderung gab
s.chomp("o") # => "Hall": entfernt "o" am Ende
$/ = ";" # Setze globalen Feldtrenner $/ auf Semikolon
"Hallo;".chomp # => "Hallo": nun entferne Semikolon am Ende
# chop entfernt Zeichen oder
Weitere Kostenlose Bücher