tamaño objects len item for array ruby arrays

objects - Ruby-Conversión de entero a cadena



ruby select (7)

Creo que esto está cambiando en Ruby 1.9 de modo que "asdf" [2] arroja "d" en lugar del código de carácter

En Ruby, tratar de imprimir los elementos individuales de un String me está dando problemas. En lugar de ver a cada personaje, veo sus valores ASCII:

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

He buscado en línea pero no puedo encontrar ninguna forma de recuperar el "0" original. Soy un poco nuevo para Ruby, sé que tiene que ser algo simple, pero parece que no puedo encontrarlo.


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


El operador [,] le devuelve una cadena, es un operador de subcadena, mientras que el operador [] devuelve el carácter que ruby ​​trata como un número al imprimirlo.


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

a[0].chr


Para resumir:

Este comportamiento desaparecerá en la versión 1.9, en la que se devuelve el carácter en sí, pero en versiones anteriores, tratar de hacer referencia a un solo carácter de una cadena por su posición de carácter devolverá su valor de carácter (por lo que "ABC" [2] regresa 67)

Hay una serie de métodos que devuelven un rango de caracteres de una cadena (vea los documentos de Ruby en el método de división de cadenas). Todos los siguientes retornan "C":

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

Encuentro que el selector de rango es el más fácil de leer. ¿Alguien puede decir si es menos eficiente?


Creo que each_char o chars describe mejor lo que quieres.

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


@Chris ,

Así es como [] y [,] se definen para la clase String.

Mira la API String .