Conversione da array rubino a stringa


178

Ho una matrice di rubini come ['12','34','35','231'].

Voglio convertirlo in una stringa come '12','34','35','231'.

Come lo posso fare?

Risposte:


315

Mi unirò al divertimento con:

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

MODIFICARE:

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

Qualche interpolazione di stringhe per aggiungere la prima e l'ultima virgoletta singola: P


1
Ciò si traduce in "12,34,35,231". Manca le virgolette singole nel risultato.
Bernard,

1
Okay ha aggiunto qualche interpolazione di stringhe per aggiungere la prima e l'ultima virgoletta singola: P
corroso il

come ripristinare questo?
zx1986,

cosa intendi con revert @ zx1986
corroso il

@corroded Siamo spiacenti, ho capito. JSON.parse("[12, 39, 100]")restituirà un array.
zx1986,

43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"

6
Forse usando "'#{i}'"invece.
Mladen Jablanović,

non pensare che sia necessaria la mappa. join dovrebbe fare il trucco. vedi sotto
djburdick il

31

prova questo codice ['12','34','35','231']*","

ti darà il risultato "12,34,35,231"

Spero che questo sia il risultato, fammi sapere


Penso che anche il PO debba avere la sola citazione.
Laf,


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

Questo non produce l'output corretto: i valori devono essere racchiusi tra virgolette singole. Se questo fosse l'output desiderato, string_arr.join (",") sarebbe l'opzione migliore.
Sean Cameron,

Sean, ti sbagli. Hai eseguito l'espressione, almeno una volta ??
avihil,

È ancora sbagliato. Si traduce in virgolette doppie attorno alle voci dell'array, non virgolette singole. Inoltre, si basa su un'ipotesi sul formato in cui "inspect ()" stampa i dati, il che li rende fragili.
Andrew Hodgkinson,

['1', '2', '3']. Map {| o | "\ '# {o} \'"} .join (',')
avihil,

7

Trovo in questo modo leggibile e rubino:

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

E ancora un'altra variante

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

È possibile utilizzare un approccio di programmazione funzionale, trasformando i dati:

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


-5

array.inspect.inspect.gsub(/\[|\]/, "") potrebbe fare il trucco

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.