Datentypen konvertieren in Ruby
Einleitung
Jedes von Ihnen erstellte Programm wird mehrere Datentypen enthalten. Es ist jedoch wichtig zu bedenken, dass Sie im Allgemeinen Operationen innerhalb desselben Datentyps ausführen. Das bedeutet, dass Sie mathematische Operationen auf Zahlen durchführen oder Zeichenketten zusammenfügen.
Manchmal stammen Daten aus externen Quellen, wie der Tastatur, einer API-Antwort oder einer Datenbank, und Sie müssen sie konvertieren, um damit arbeiten zu können. Ruby bietet mehrere Methoden, um Werte von einem Datentyp in einen anderen zu konvertieren. In diesem Tutorial konvertieren Sie Zeichenketten in Zahlen, Objekte in Zeichenketten, Zeichenketten in Arrays und konvertieren zwischen Zeichenketten und Symbolen.
Datentypen konvertieren: Zeichenketten in Zahlen
Ruby bietet die Methoden to_i
und to_f
, um Zeichenketten in Zahlen zu konvertieren. to_i
konvertiert eine Zeichenkette in eine Ganzzahl, und to_f
konvertiert eine Zeichenkette in eine Fließkommazahl.
"5".to_i # 5
"55.5".to_i # 55
"55.5".to_f # 55.5
Um dies zu demonstrieren, erstellen Sie ein kleines Programm, das nach zwei Zahlen fragt und die Summe anzeigt. Erstellen Sie ein neues Ruby-Programm namens adder.rb
mit folgendem Code:
adder.rb
print "Was ist die erste Zahl? "
first_number = gets.chop
print "Was ist die zweite Zahl? "
second_number = gets.chop
sum = first_number + second_number
print sum
Wenn Sie das Programm ausführen, erhalten Sie möglicherweise eine unerwartete Antwort:
ruby adder.rb
Ausgabe
Was ist die erste Zahl? 5
Was ist die zweite Zahl? 5
55
Das Programm sagt, dass die Summe von 5 und 5 gleich 55 ist. Sie wissen, dass das nicht stimmt, aber der Computer hat technisch gesehen recht. Das Programm hat nach zwei Zahlen gefragt, aber Sie haben sie über die Tastatur eingegeben. Sie haben nicht die Zahl 5 gesendet, sondern das Zeichen „5“. Mit anderen Worten: Ihr Programm hat beide Eingaben als Zeichenketten betrachtet, und wenn Sie die Zeichenketten „5“ und „5“ zusammenfügen, erhalten Sie die neue Zeichenkette „55“.
Um dies zu vermeiden, konvertieren Sie beide Zeichenketten in Zahlen. Ändern Sie Ihr Programm so, dass es beide Zahlen mit der Methode to_f
in Fließkommazahlen umwandelt:
adder.rb
print "Was ist die erste Zahl? "
first_number = gets.chop
print "Was ist die zweite Zahl? "
second_number = gets.chop
# Zeichenketten in Zahlen umwandeln
first_number = first_number.to_f
second_number = second_number.to_f
sum = first_number + second_number
print sum
Führen Sie das Programm erneut aus:
ruby adder.rb
Ausgabe
Was ist die erste Zahl? 5
Was ist die zweite Zahl? 5
10.0
Wenn Sie erneut 5 und 5 eingeben, erhalten Sie 10.0.
Besonderes Verhalten von to_i
und to_f
Die Methoden to_i
und to_f
weisen einige interessante Verhaltensweisen auf, wenn die Zeichenketten nicht numerisch sind. Zum Beispiel:
"123-abc".to_i
Ausgabe
123
In diesem Beispiel ergibt die Konvertierung der Zeichenkette „123-abc“ in eine Ganzzahl die Ganzzahl 123. Die Methode to_i
stoppt, sobald sie auf das erste nicht-numerische Zeichen stößt.
Datentypen konvertieren: Daten in Zeichenketten
Ruby bietet die Methode to_s
, um jeden anderen Typ in eine Zeichenkette zu konvertieren:
25.to_s # "25"
(25.5).to_s # "25.5"
["Sammy", "Shark"].to_s # "[\"Sammy\", \"Shark\"]"
Oft konvertieren Sie Daten in Zeichenketten, um Programmausgaben zu erstellen.
Datentypen konvertieren: Zeichenketten in Arrays
Wenn Sie eine Zeichenkette haben, können Sie sie mit der Methode split
in ein Array umwandeln:
"eins zwei drei".split
Ausgabe
["eins", "zwei", "drei"]
Konvertieren zwischen Zeichenketten und Symbolen
Um ein Symbol in eine Zeichenkette umzuwandeln, verwenden Sie die Methode to_s
:
:language.to_s
Ausgabe
"language"
Um eine Zeichenkette in ein Symbol zu konvertieren, verwenden Sie die Methode to_sym
:
"first_name".to_sym
Ausgabe
:first_name
Fazit
In diesem Tutorial haben wir demonstriert, wie man mehrere der wichtigsten nativen Datentypen mithilfe integrierter Methoden in andere Datentypen konvertiert. Sie können jetzt Zahlen in Zeichenketten, Zeichenketten in Arrays und zwischen Symbolen und Zeichenketten konvertieren.