¿Cómo dividir una cadena delimitada en Ruby y convertirla en una matriz?


Tengo una cadena

"1,2,3,4"

Y me gustaría convertirlo en una matriz:

[1,2,3,4]

¿Cómo?

Author: A.D., 2009-06-10

5 answers

>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

O para enteros:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

O para versiones posteriores de ruby (>=1.9 - como señaló Alex):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]
 371
Author: Shadwell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-16 11:23:06

"1,2,3,4".split(",") como cadenas

"1,2,3,4".split(",").map { |s| s.to_i } como enteros

 31
Author: Oliver N.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-10 14:04:15

Para String Integer sin espacio como String

arr = "12345"

arr.split('')

output: ["1","2","3","4","5"]

Para String Integer con el espacio como String

arr = "1 2 3 4 5"

arr.split(' ')

output: ["1","2","3","4","5"]

Para String Integer sin espacio como Integer

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

Para Cadena

arr = "abc"

arr.split('')

output: ["a","b","c"]

Explicación:

  1. arr - > cadena con la que vas a realizar cualquier acción.
  2. split() -> es un método, que divide la entrada y la almacena como matriz.
  3. '' o ' ' o ',' - > es un valor, que es necesario eliminar de dado cadena.
 15
Author: Aravin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-22 10:42:57

La forma más sencilla de convertir una cadena que tiene un delimitador como una coma es usar el método split

"1,2,3,4".split(',') # "1", "2", "3", "4"]

Puedes encontrar más información sobre cómo usar el método split en los documentos de ruby

Divide str en subcadenas basadas en un delimitador, devolviendo una matriz de estas subcadenas.

Si pattern es una cadena, entonces su contenido se usa como delimitador al dividir str. Si el patrón es un solo espacio, str se divide en espacio en blanco, con espacios en blanco iniciales y corridas de espacios en blanco contiguos personajes ignorados.

Si el patrón es una expresión regular, str se divide donde el patrón coincide. Cuando el patrón coincide con una cadena de longitud cero, str se divide en personajes individuales. Si el patrón contiene grupos, el respectivo las coincidencias también serán devueltas en el array.

Si se omite pattern, se usa el valor de$;. Si $; es nil (que es por defecto), str se divide en espacios en blanco como si '' fuera indicado.

Si se omite el parámetro limit, los campos null finales son suprimir. Si el límite es un número positivo, a lo sumo ese número de se devolverán los campos (si el límite es 1, se devolverá la cadena completa como la única entrada en una matriz). Si es negativo, no hay límite a la número de campos devueltos, y los campos nulos finales no son suprimir.

 1
Author: MZaragoza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-22 17:09:50
"12345".each_char.map(&:to_i)

each_char hace básicamente lo mismo que split(''): Divide una cadena en una matriz de sus caracteres.

Hmmm, ahora me doy cuenta de que en la pregunta original la cadena contiene comas, por lo que mi respuesta no es realmente útil ; - (..

 -2
Author: andiba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-30 16:32:22