Ruby array a conversión de cadena

178

Tengo un conjunto de rubíes como ['12','34','35','231'].

Quiero convertirlo en una cadena como '12','34','35','231'.

¿Cómo puedo hacer eso?

Sachin R
fuente

Respuestas:

315

Me uniré a la diversión con:

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

EDITAR:

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

Algunas interpolaciones de cadenas para agregar la primera y la última comilla simple: P

corroído
fuente
1
Eso da como resultado "12,34,35,231". Faltan las comillas simples en el resultado.
Bernard
1
De acuerdo, agregué un poco de interpolación de cadenas para agregar la primera y la última comillas simples: P
corroído el
¿Cómo revertir esto?
zx1986
a qué te refieres revertir @ zx1986
corroído el
@corroded Lo siento, lo tengo. JSON.parse("[12, 39, 100]")devolverá una matriz.
zx1986
43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"
Shadwell
fuente
66
Quizás usando en su "'#{i}'"lugar.
Mladen Jablanović
No creo que se necesite un mapa. unirse debería hacer el truco. ver abajo
djburdick
31

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

te dará el resultado "12,34,35,231"

Espero que este sea el resultado, házmelo saber

Ranjith Kumar Vengala
fuente
Creo que el OP también debe tener una cita única.
Laf
11
array.map{ |i|  %Q('#{i}') }.join(',')
país salvaje
fuente
1
Para citar a Mladen, "Quizás [usar] en su "'#{i}'"lugar".
Andrew Grimm
9
string_arr.map(&:inspect).join(',') # or other separator
avihil
fuente
Esto no produce la salida correcta: los valores deben estar entre comillas simples. Si este fuera el resultado deseado, string_arr.join (",") sería la mejor opción.
Sean Cameron
Sean, te equivocas. ¿Ejecutó la expresión, al menos una vez?
avihil
Aún está mal. Da como resultado comillas dobles alrededor de las entradas de la matriz, no comillas simples. Además, se basa en el supuesto de que el formato "inspeccionar ()" imprime los datos, lo que los hace frágiles.
Andrew Hodgkinson
['1', '2', '3']. Mapa {| o | "\ '# {o} \'"} .join (',')
avihil
7

Me parece legible y rubí de esta manera:

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

p  ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'"
hirolau
fuente
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
fuente
4

Y otra variante más

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

Puede usar un enfoque de programación funcional, transformando datos:

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

Peter Toth - Toma
fuente
-5

array.inspect.inspect.gsub(/\[|\]/, "") podría hacer el truco

cristiano
fuente