Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
^ beginnen, werden negiert.
"Hallo".count('a-z', '^aeiou') # => 2: zähle kleine Konsonanten
"Hallo".delete('a-z', '^aeiou') # => "Hao": lösche kleine Konsonanten
    9.1.1 Text bearbeiten
    Wie Sie wissen, ermöglichen die in doppelten Anführungszeichen eingeschlossenen String-Literale, bestimmte Ruby-Ausdrücke in Strings auswerten zu lassen, zum Beispiel:
n, animal = 2, "Mäuse"
"#{n+1} blinde #{animal}" # => '3 blinde Mäuse'
    Diese Auswertungssyntax für String-Literale wurde in Kapitel 3 beschrieben. Ruby unterstützt noch eine weitere Technik für das Interpolieren von Werten in Strings: Die Klasse
String
definiert einen Formatoperator
%
und das Modul
Kernel
die globalen Methoden
printf
und
sprintf
. Diese Methoden und der Operator
%
ähneln stark der Funktion
printf
, die durch die Programmiersprache C so bekannt geworden ist. Ein Vorteil der Formatierung im
printf
-Stil gegenüber der normalen Verkettung von Strings ist, dass sie eine exakte Kontrolle über Feldbreiten bietet, was für das Generieren von ASCII-Reports hilfreich sein kann. Ein weiterer Vorteil ist, dass Sie die Anzahl der signifikanten Stellen bei der Ausgabe von Gleitkommazahlen festlegen können, was bei der Verwendung in wissenschaftlichen (und manchmal auch Finanz-)Anwendungen praktisch ist. Schließlich entkoppelt eine
printf
-Formatierung den zu formatierenden Wert vom String, in den er geschrieben werden soll. Das kann man zur Internationalisierung und Lokalisierung von Anwendungen nutzen.
    Nun kommen einige Beispiele für den
%
-Operator. Schauen Sie bei
Kernel.sprintf
für eine vollständige Dokumentation der Formatanweisungen nach, die von diesen Methoden genutzt werden können.
# Alternativen für die obige String-Erstellung
printf('%d blinde %s', n+1, animal) # Ausgabe '3 blinde Mäuse', gibt nil zurück
sprintf('%d blinde %s', n+1, animal) # => '3 blinde Mäuse'
'%d blinde %s' % [n+1, animal] # Verwende rechts ein Array für mehr als ein Argument

# Zahlen formatieren
'%d' % 10 # => '10': %d für Dezimalzahlen
'%x' % 10 # => 'a': hexadezimale Ganzzahlen
'%X' % 10 # => 'A': hexadezimale Ganzzahlen in Großbuchstaben
'%o' % 10 # => '12': Oktal-Ganzzahlen
'%f' % 1234.567 # => '1234.567000': Gleitkommazahlen in voller Länge
'%e' % 1234.567 # => '1.234567e+03': Exponentialnotation erzwingen
'%E' % 1234.567 # => '1.234567e+03': Exponentialnotation mit großem E
'%g' % 1234.567 # => '1234.57': sechs signifikante Ziffern
'%g' % 1.23456E12 # => '1.23456e+12': verwende %f oder %e je nach Größe

# Feldbreite
'%5s' % '<<<' # ' <<<': rechtsbündig in einem fünf Zeichen breiten Feld
'%-5s' % '>>>' # '>>> ': linksbündig in einem fünf Zeichen breiten Feld
'%5d' % 123 # ' 123': Feld ist fünf Zeichen breit
'%05d' % 123 # '00123': Auffüllen mit Nullen in einem fünf Zeichen breiten Feld

# Genauigkeit
'%.2f' % 123.456 # '123.46': zwei Ziffern nach dem Dezimalpunkt
'%.2e' % 123.456 # '1.23e+02': zwei Ziffern nach dem Dezimalpunkt = drei Ziffern
     # insgesamt
'%.6e' % 123.456 # '1.234560e+02': achten Sie auf die zusätzlichen Nullen
'%.4g' % 123.456 # '123.5': vier Stellen

# Kombination aus Feldbreite und Ziffernzahl
'%6.4g' % 123.456 # ' 123.5': vier Stellen in einem sechs Zeichen breiten Feld
'%3s' % 'ruby' # 'ruby': String-Argument ist breiter als das Feld
'%3.3s' % 'ruby' # 'rub': durch die Ziffernzahl wird der String abgeschnitten
# Mehrere zu formatierende Argumente
args = ['Syntax Error', 'test.rb', 20] # Ein Array mit Argumenten
"%s: in '%s' line %d" % args # => "Syntax Error: in 'test.rb' line 20"
# Gleiche Argumente, in anderer Reihenfolge. Gut zur Internationalisierung.
"%2$s:%3$d: %1$s" % args # => "test.rb:20: Syntax Error"
    9.1.2 Packen und Entpacken binärer Strings
    Strings können in Ruby nicht nur Texte, sondern auch Binärdaten enthalten. Dabei können die beiden Methoden
Array.pack
und
String.unpack
hilfreich sein, wenn Sie mit binären Dateiformaten oder Netzwerkprotokollen arbeiten. Mit
Array.pack
kodieren Sie die Elemente eines Array in einen binären String. Und mit
String.unpack
dekodieren Sie einen binären String, extrahieren die Werte aus ihm und liefern diese in einem Array zurück. Sowohl das Kodieren als auch das Dekodieren nutzen einen Format-String, in dem Buchstaben den Datentyp und die Kodierung angeben, während Zahlen die Anzahl der Wiederholungen definieren. Das Erstellen dieser Format-Strings ist recht krude, aber Sie finden eine vollständige Liste von Buchstabenkürzeln in der Dokumentation

Weitere Kostenlose Bücher