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?

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


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'"

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


Creo que el OP también debe tener una cita única.
Laf


9
string_arr.map(&:inspect).join(',') # or other separator

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'"

5
> puts "'"+['12','34','35','231']*"','"+"'"
'12','34','35','231'

> puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'")
'12', '34', '35', '231'

4

Y otra variante más

a = ['12','34','35','231']
a.to_s.gsub(/\"/, '\'').gsub(/[\[\]]/, '')

3
irb(main)> varA
=> {0=>["12", "34", "35", "231"]}
irb(main)> varA = Hash[*ex.collect{|a,b| [a,b.join(",")]}.flatten]
...

3
irb(main):027:0> puts ['12','34','35','231'].inspect.to_s[1..-2].gsub('"', "'")
'12', '34', '35', '231'
=> nil

2

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

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


-5

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.