Como dividir uma string delimitada em Ruby e convertê-la em uma matriz?


Respostas:


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

Ou para números inteiros:

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

Ou para versões posteriores do ruby ​​(> = 1.9 - como apontado por Alex):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]

28
Lembre-se, se você estiver usando> = 1.9, você pode simplesmente usar "1,2,3,4" .split (','). Map (: to_i) #
Alex Alex

7
Se você estiver usando o apoio ativo que você pode fazer: mapa (&: to_i)
jonnii

31

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

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


19

Para String Integersem espaço comoString

arr = "12345"

arr.split('')

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

Para String Integercom espaço comoString

arr = "1 2 3 4 5"

arr.split(' ')

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

Para String Integersem espaço comoInteger

arr = "12345"

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

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

For String

arr = "abc"

arr.split('')

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

Explicação :

  1. arr -> string que você executará qualquer ação.
  2. split() -> é um método, que divide a entrada e a armazena como matriz.
  3. ''ou ' 'ou ','-> é um valor que precisa ser removido da determinada sequência.

1

a maneira mais simples de converter uma string que possui um delimitador como vírgula é apenas usar o método split

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

você pode encontrar mais informações sobre como usar o método split nos documentos ruby

Divide str em substrings com base em um delimitador, retornando uma matriz desses substrings.

Se pattern for uma String, seu conteúdo será usado como delimitador ao dividir str. Se o padrão for um espaço único, str será dividido em espaço em branco, com espaços em branco à esquerda e execuções de caracteres de espaço em branco contíguos ignorados.

Se o padrão é uma Regexp, str é dividido onde o padrão corresponde. Sempre que o padrão corresponde a uma sequência de comprimento zero, str é dividido em caracteres individuais. Se o padrão contiver grupos, as respectivas correspondências também serão retornadas na matriz.

Se o padrão for omitido, o valor de $; é usado. Se $; é nulo (que é o padrão), str é dividido no espaço em branco como se `` tivesse sido especificado.

Se o parâmetro limit for omitido, os campos nulos à direita serão suprimidos. Se o limite for um número positivo, no máximo esse número de campos será retornado (se o limite for 1, a cadeia inteira será retornada como a única entrada em uma matriz). Se negativo, não há limite para o número de campos retornados e os campos nulos à direita não são suprimidos.


-1
"12345".each_char.map(&:to_i)

each_charfaz basicamente o mesmo que split(''): Divide uma string em uma matriz de seus caracteres.

hmmm, agora percebo que na pergunta original a string contém vírgulas, então minha resposta não é realmente útil ;-( ..


3
você pode editar sua resposta para explicar o que está fazendo?
MZaragoza
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.