Pregunta

En Ruby, tratando de imprimir los elementos individuales de una Cadena que me está dando problemas.En lugar de ver a cada personaje, estoy viendo sus valores ASCII en su lugar:

>> a = "0123"
=> "0123"
>> a[0]
=> 48

He mirado por internet pero no puede encontrar ninguna manera de conseguir el original "0" de la espalda de ella.Soy un poco nuevo en Ruby para que yo sé que tiene que ser algo simple, pero me parece que no puede encontrar.

¿Fue útil?

Solución

O usted puede convertir el entero a su carácter de valor:

a[0].chr

Otros consejos

Quieres un[0,1] en lugar de[0].

Creo que esto está cambiando en Ruby 1.9 tal que "asdf"[2] da "d" en lugar de que el código de carácter

Para resumir:

Este comportamiento va a estar en la versión 1.9, en la que el personaje en sí es devuelto, pero en versiones anteriores, tratando de hacer referencia a un único carácter de una cadena por su posición de carácter devolverá su valor de carácter (modo "ABC"[2] devuelve 67)

Hay un número de métodos que devuelven un rango de caracteres de una cadena (véase el Rubí docs en la Cadena de rebanada método La totalidad de los siguientes retorno "C":

"ABC"[2,1] 
"ABC"[2..2]
"ABC".slice(2,1)

Me parece que el selector de gama de las más fáciles de leer.Puede alguien hablar de si es menos eficiente?

@Chris,

Eso es sólo cómo [] y [,] se definen para la clase String.

Retirar el Cadena de API.

El [,] operador devuelve una cadena, es una subcadena de operador, donde el operador [] devuelve el carácter que ruby trata como un número, cuando se puede imprimir.

Creo each_char o chars que mejor describe lo que usted desea.

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top