Conversão de matriz Ruby para string

178

Eu tenho uma matriz de rubi como ['12','34','35','231'].

Eu quero convertê-lo para uma string como '12','34','35','231'.

Como eu posso fazer isso?

Sachin R
fonte

Respostas:

315

Vou me divertir com:

['12','34','35','231'].join(', ')

EDITAR:

"'#{['12','34','35','231'].join("', '")}'"

Alguma interpolação de string para adicionar a primeira e a última citação simples: P

corroído
fonte
1
Isso resulta em "12,34,35,231". Faltam aspas simples no resultado.
Bernard
1
Okay adicionou alguma interpolação de string para adicionar a primeira e a última aspas simples: P
corroída de
como reverter isso?
precisa saber é
o que você quer dizer reverter @ zx1986
corroído em
@ codificado Desculpe, entendi. JSON.parse("[12, 39, 100]")retornará uma matriz.
zx1986
43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"
Shadwell
fonte
6
Talvez usando em "'#{i}'"vez disso.
Mladen Jablanović 18/08/10
não pense que o mapa é necessário. join deve fazer o truque. veja abaixo
djburdick
31

tente este código ['12','34','35','231']*","

lhe dará o resultado "12,34,35,231"

Espero que este seja o resultado que você, me avise

ranjith kumar vengala
fonte
Acho que o OP também precisa ter aspas simples.
Laf
11
array.map{ |i|  %Q('#{i}') }.join(',')
país selvagem
fonte
1
Para citar Mladen, "Talvez [use] em "'#{i}'"vez disso".
Andrew Grimm
9
string_arr.map(&:inspect).join(',') # or other separator
avihil
fonte
Isso não produz a saída correta - os valores precisam ser agrupados em aspas simples. Se este foi o resultado desejado, string_arr.join (",") seria a melhor opção.
21413 Sean Cameron
Sean, você está errado. Você executou a expressão, pelo menos uma vez?
avihil
Ainda está errado. Isso resulta em aspas duplas nas entradas da matriz, não em aspas simples. Além disso, conta com uma suposição sobre o formato que "inspeciona ()" imprime dados, o que os torna frágeis.
Andrew Hodgkinson
['1', '2', '3']. Mapa {| o | "\ '# {o} \'"} .join (',')
15/01/14
7

Acho assim legível e rubyish:

add_quotes =- > x{"'#{x}'"}

p  ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'"
hirolau
fonte
5
> puts "'"+['12','34','35','231']*"','"+"'"
'12','34','35','231'

> puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'")
'12', '34', '35', '231'
John La Rooy
fonte
4

E ainda outra variação

a = ['12','34','35','231']
a.to_s.gsub(/\"/, '\'').gsub(/[\[\]]/, '')
Bernard
fonte
3
irb(main)> varA
=> {0=>["12", "34", "35", "231"]}
irb(main)> varA = Hash[*ex.collect{|a,b| [a,b.join(",")]}.flatten]
...
NinjaCat
fonte
3
irb(main):027:0> puts ['12','34','35','231'].inspect.to_s[1..-2].gsub('"', "'")
'12', '34', '35', '231'
=> nil
ngoozeff
fonte
2

Você pode usar alguma abordagem de programação funcional, transformando dados:

['12','34','35','231'].map{|i| "'#{i}'"}.join(",")

Peter Toth - Toma
fonte
-5

array.inspect.inspect.gsub(/\[|\]/, "") poderia fazer o truque

cristão
fonte