Ruby array ke konversi string

178

Saya memiliki array ruby ​​seperti ['12','34','35','231'].

Saya ingin mengubahnya menjadi string seperti '12','34','35','231'.

Bagaimana saya bisa melakukan itu?

Sachin R
sumber

Jawaban:

315

Saya akan bergabung dengan kesenangan dengan:

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

EDIT:

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

Beberapa interpolasi string untuk menambahkan kutipan tunggal pertama dan terakhir: P

berkarat
sumber
1
Itu menghasilkan "12,34,35,231". Tidak ada tanda kutip tunggal dalam hasil.
Bernard
1
Oke menambahkan beberapa interpolasi string untuk menambahkan tanda kutip tunggal pertama dan terakhir: P
terkorosi
bagaimana cara mengembalikan ini?
zx1986
apa maksudmu revert @ zx1986
terkorosi
@ dikorosi Maaf, saya mengerti. JSON.parse("[12, 39, 100]")akan mengembalikan array.
zx1986
43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"
Shadwell
sumber
6
Mungkin "'#{i}'"malah menggunakan .
Mladen Jablanović
jangan pikir peta diperlukan. bergabung harus melakukan trik. lihat di bawah
djburdick
31

coba kode ini ['12','34','35','231']*","

akan memberi Anda hasil "12,34,35,231"

Saya harap ini hasilnya Anda, beri tahu saya

ranjith kumar vengala
sumber
Saya pikir OP perlu memiliki kutipan tunggal juga.
Laf
11
array.map{ |i|  %Q('#{i}') }.join(',')
negara liar
sumber
1
Mengutip Mladen, "Mungkin [gunakan] "'#{i}'"sebagai gantinya."
Andrew Grimm
9
string_arr.map(&:inspect).join(',') # or other separator
avihil
sumber
Ini tidak menghasilkan output yang benar - nilai-nilai perlu dibungkus dengan tanda kutip tunggal. Jika ini adalah output yang diinginkan maka string_arr.join (",") akan menjadi opsi yang lebih baik.
Sean Cameron
Sean, kamu salah. Apakah Anda menjalankan ekspresi, setidaknya sekali ??
avihil
Itu masih salah. Ini menghasilkan tanda kutip ganda di sekitar entri array, bukan tanda kutip tunggal. Plus itu bergantung pada asumsi tentang format yang "memeriksa ()" mencetak data, yang membuatnya rapuh.
Andrew Hodgkinson
['1', '2', '3'] peta {| o | "\ '# {o} \'"} .join (',')
avihil
7

Saya menemukan cara ini dapat dibaca dan rubi:

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

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

Dan variasi lainnya

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

Anda dapat menggunakan beberapa pendekatan pemrograman fungsional, mentransformasikan data:

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

Peter Toth - Toma
sumber
-5

array.inspect.inspect.gsub(/\[|\]/, "") bisa melakukan trik

Kristen
sumber