Es gibt nicht eine integrierte Funktion zu sagen, ob ein String ist effektiv eine ganze Zahl , aber Sie können leicht Ihre eigene machen:
class String
def int
Integer(self) rescue nil
end
end
Dies funktioniert, weil die Kernel-Methode Integer()
einen Fehler auslöst, wenn die Zeichenfolge nicht in eine Ganzzahl konvertiert werden kann, und der Inline-Code rescue nil
diesen Fehler in eine Null umwandelt.
Integer("1") -> 1
Integer("1x") -> nil
Integer("x") -> nil
und damit:
"1".int -> 1 (which in boolean terms is `true`)
"1x".int -> nil
"x".int -> nil
Sie die Funktion verändern könnten true
in den wahren Fällen zurückzukehren, statt der ganzen Zahl selbst, aber wenn Sie die Zeichenfolge sind testen, ob es sich um eine ganze Zahl ist Wahrscheinlich möchtest du diese Ganzzahl für etwas verwenden! Ich mache sehr häufig Sachen wie diese:
if i = str.int
# do stuff with the integer i
else
# error handling for non-integer strings
end
Obwohl, wenn die Zuordnung in einer Testposition anstößigen Inhalt enthält, können Sie es immer tun, wie folgt:
i = str.int
if i
# do stuff with the integer i
else
# error handling for non-integer strings
end
So oder so, ist diese Methode nur, dass die Umwandlung einmal, was, wenn Sie eine Menge von diesen tun müssen, kann ein erheblicher Geschwindigkeitsvorteil sein.
[Geänderte Funktionsnamen von int?
zu int
zu vermeiden, was impliziert, sollte es nur wahr/falsch zurück.]
Google ist nett, aber es ist nicht der erste Ort, um nach dem zu suchen, was in Rubys Standard- und Kernbibliotheken enthalten ist. Ich würde empfehlen, zur primären Quelle zu gehen: der eigenen Maschine 'ri' oder der [rubydoc site] (http://www.ruby-doc.org/).Die Eingabe von 'ri is_a?' In Ihrer Kommandozeile könnte einige Treffer zurückliefern, mit dem wichtigen 'Object.is_a?'. –
Verwandte Frage zu dem, was Sie versuchen: [Anzahl aus dem Zeichenfolgenmuster mit regulärem Ausdruck abrufen ] (http://stackoverflow.com/questions/694176/retrieve-number-from-the-string-pattern-using-regular-expression) –