Conversion de tableau Ruby en chaîne

183

J'ai un tableau de rubis comme ['12','34','35','231'].

Je veux le convertir en une chaîne comme '12','34','35','231'.

Comment puis je faire ça?

Sachin R
la source

Réponses:

322

Je vais rejoindre le plaisir avec:

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

ÉDITER:

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

Une interpolation de chaîne pour ajouter le premier et le dernier guillemet simple: P

corrodé
la source
1
Cela donne "12,34,35,231". Il manque les guillemets simples dans le résultat.
Bernard
1
OK ajouté une interpolation de chaîne pour ajouter les premier et dernier guillemets simples: P
corrodé
comment inverser cela?
zx1986
que voulez-vous dire revert @ zx1986
corrodé le
@corroded Désolé, je l'ai compris. JSON.parse("[12, 39, 100]")renverra un tableau.
zx1986
43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"
Shadwell
la source
7
Peut-être en utilisant à la "'#{i}'"place.
Mladen Jablanović
ne pensez pas que la carte est nécessaire. join devrait faire l'affaire. voir ci-dessous
djburdick
32

essayez ce code ['12','34','35','231']*","

vous donnera le résultat "12,34,35,231"

J'espère que c'est le résultat que vous, faites le moi savoir

ranjith kumar vengala
la source
Je pense que le PO doit également avoir une citation unique.
Laf
12
array.map{ |i|  %Q('#{i}') }.join(',')
pays sauvage
la source
1
Pour citer Mladen, "Peut-être [utiliser] à la "'#{i}'"place."
Andrew Grimm du
C'est la bonne façon de le faire, devrait être la réponse acceptée.
Claudio Floreani
9
string_arr.map(&:inspect).join(',') # or other separator
avihil
la source
Cela ne produit pas la sortie correcte - les valeurs doivent être entourées de guillemets simples. Si c'était la sortie souhaitée, string_arr.join (",") serait la meilleure option.
Sean Cameron
Sean, tu as tort. Avez-vous exécuté l'expression, au moins une fois?
avihil
C'est toujours faux. Il en résulte des guillemets doubles autour des entrées du tableau, pas des guillemets simples. De plus, il repose sur une hypothèse sur le format que «inspect ()» imprime les données, ce qui les rend fragiles.
Andrew Hodgkinson
['1', '2', '3']. Map {| o | "\ '# {o} \'"} .join (',')
avihil
7

Je trouve cela lisible et rubis:

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

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

Et encore une autre variation

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

Vous pouvez utiliser une approche de programmation fonctionnelle, en transformant les données:

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

Peter Toth - Toma
la source
-6

array.inspect.inspect.gsub(/\[|\]/, "") pourrait faire l'affaire

Christian
la source