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?

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


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

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


Saya pikir OP perlu memiliki kutipan tunggal juga.
Laf


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

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

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

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

4

Dan variasi lainnya

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

Anda dapat menggunakan beberapa pendekatan pemrograman fungsional, mentransformasikan data:

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


-5

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.