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.

War es hilfreich?

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?

@Chris,

Genau so sind [] und [,] für die String-Klasse definiert.

Besuche die String-API.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top