Eu tenho uma corda
"1,2,3,4"
e gostaria de convertê-lo em uma matriz:
[1,2,3,4]
Quão?
Eu tenho uma corda
"1,2,3,4"
e gostaria de convertê-lo em uma matriz:
[1,2,3,4]
Quão?
Respostas:
>> "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]
String Integer
sem espaço comoString
arr = "12345"
arr.split('')
output: ["1","2","3","4","5"]
String Integer
com espaço comoString
arr = "1 2 3 4 5"
arr.split(' ')
output: ["1","2","3","4","5"]
String Integer
sem espaço comoInteger
arr = "12345"
arr.split('').map(&:to_i)
output: [1,2,3,4,5]
arr = "abc"
arr.split('')
output: ["a","b","c"]
Explicação :
arr
-> string que você executará qualquer ação.split()
-> é um método, que divide a entrada e a armazena como matriz.''
ou ' '
ou ','
-> é um valor que precisa ser removido da determinada sequência.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.
"12345".each_char.map(&:to_i)
each_char
faz 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 ;-( ..