2010-08-17 9 views

Odpowiedz

245

ja przyłączyć się do zabawy z:

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

EDIT:

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

Niektóre interpolacja ciąg dodać pierwszy i ostatni jeden cytat: P

+0

To daje "12,34,35,231". Brakuje pojedynczych cudzysłowów w wyniku. – Alkaline

+1

Okay dodał trochę interpolacji ciągów, aby dodać pierwsze i ostatnie pojedyncze cytaty: P – corroded

+0

jak to zmienić? – zx1986

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

Może używając ' " '# {i}'"' zamiast. –

+0

Nie myśl, że mapa jest potrzebna. dołączyć powinno załatwić sprawę. zobacz poniżej – djburdick

+0

fajne, działało jak urok dla mnie! –

-4

array.inspect.inspect.gsub(/\[|\]/, "") mógłby rade

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

a jeszcze inna odmianę

a = ['12','34','35','231'] 
a.to_s.gsub(/\"/, '\'').gsub(/[\[\]]/, '') 
5
> puts "'"+['12','34','35','231']*"','"+"'" 
'12','34','35','231' 

> puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'") 
'12', '34', '35', '231' 
10
array.map{ |i| %Q('#{i}') }.join(',') 
+1

Cytując Mladena, "Być może [używaj]" "" # {i} "" zamiast ". –

25

wypróbować ten kod ['12','34','35','231']*","

daje spowodować "12,34,35,231"

Mam nadzieję, że jest to wynik ty, daj mi znać

+0

Uważam, że PO musi mieć również pojedynczy cytat. – Laf

+0

Dobrze, pracuj dla mnie :) – SSR

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

Doskonała odpowiedź. –

+0

To nie daje prawidłowego wyniku - wartości muszą być zawijane w pojedyncze cudzysłowy. Gdyby to było pożądane wyjście, lepszym rozwiązaniem byłby string_arr.join (","). –

+0

Sean, mylisz się. Czy uruchomiłeś wyrażenie, co najmniej raz? – avihil

5

znajdę ten sposób czytelny i rubyish:

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

p ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'" 
0

Najprostszym sposobem byłoby wykorzystanie dołączyć, a następnie przekształcić go w liczba całkowita.

array.join.to_i 
0

Można użyć trochę funkcjonalne podejście do programowania, przekształcając dane:

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

Powiązane problemy