Ruby – Ganzzahl in String konvertieren
Frage
In Ruby bereitet mir der Versuch, die einzelnen Elemente eines Strings auszudrucken, Probleme.Anstatt jedes Zeichen zu sehen, sehe ich stattdessen deren ASCII-Werte:
>> a = "0123"
=> "0123"
>> a[0]
=> 48
Ich habe im Internet nachgeschaut, kann aber keine Möglichkeit finden, die ursprüngliche „0“ wieder herauszubekommen.Ich bin ein bisschen Ruby-Neuling und weiß, dass es etwas Einfaches sein muss, aber ich kann es einfach nicht finden.
Lösung
Oder Sie können die Ganzzahl in ihren Zeichenwert umwandeln:
a[0].chr
Andere Tipps
Sie möchten eine [0,1] anstelle einer [0].
Ich glaube, dass sich dies in Ruby 1.9 ändert, sodass „asdf“[2] „d“ anstelle des Zeichencodes ergibt
Zusammenfassen:
Dieses Verhalten wird in Version 1.9 verschwinden, in der das Zeichen selbst zurückgegeben wird. In früheren Versionen wurde jedoch beim Versuch, ein einzelnes Zeichen einer Zeichenfolge anhand seiner Zeichenposition zu referenzieren, deren Zeichenwert zurückgegeben (so dass „ABC“[2] zurückgegeben wird). 67)
Es gibt eine Reihe von Methoden, die eine Reihe von Zeichen aus einem String zurückgeben (siehe die Ruby-Dokumente zum String Slice-Methode) Alle folgenden geben „C“ zurück:
"ABC"[2,1]
"ABC"[2..2]
"ABC".slice(2,1)
Ich finde, dass die Bereichsauswahl am einfachsten zu lesen ist.Kann jemand sagen, ob es weniger effizient ist?
Der [,]-Operator gibt eine Zeichenfolge an Sie zurück, es handelt sich um einen Teilstring-Operator, während der []-Operator das Zeichen zurückgibt, das Ruby beim Ausdrucken als Zahl behandelt.
Ich finde each_char
oder chars
beschreibt besser, was Sie wollen.
irb(main):001:0> a = "0123"
=> "0123"
irb(main):002:0> Array(a.each_char)
=> ["0", "1", "2", "3"]
irb(main):003:0> puts Array(a.each_char)
0
1
2
3
=> nil