Chuyển mảng Ruby sang chuỗi


178

Tôi có một mảng ruby ​​như thế ['12','34','35','231'].

Tôi muốn chuyển đổi nó thành một chuỗi như thế nào '12','34','35','231'.

Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


315

Tôi sẽ tham gia cuộc vui với:

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

BIÊN TẬP:

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

Một số phép nội suy chuỗi để thêm trích dẫn đơn đầu tiên và cuối cùng: P


1
Điều đó dẫn đến "12,34,35,231". Nó thiếu các trích dẫn duy nhất trong kết quả.
Bernard

1
Được rồi, thêm một số phép nội suy chuỗi để thêm dấu ngoặc đơn đầu tiên và cuối cùng: P
bị ăn mòn

Làm thế nào để hoàn nguyên điều này?
zx1986

ý bạn là gì hoàn nguyên @ zx1986
bị ăn mòn

@corroded Xin lỗi, tôi hiểu rồi. JSON.parse("[12, 39, 100]")sẽ trả về một mảng.
zx1986

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

6
Có lẽ sử dụng "'#{i}'"thay thế.
Mladen Jablanović

đừng nghĩ rằng bản đồ là cần thiết. tham gia nên làm thủ thuật. xem bên dưới
djburdick

31

thử mã này ['12','34','35','231']*","

sẽ cho bạn kết quả "12,34,35,231"

Tôi hy vọng đây là kết quả bạn, cho tôi biết


Tôi nghĩ rằng OP cần phải có báo giá duy nhất là tốt.
Laf 20/12/12


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

Điều này không tạo ra đầu ra chính xác - các giá trị cần được gói trong các dấu ngoặc đơn. Nếu đây là đầu ra mong muốn thì string_arr.join (",") sẽ là lựa chọn tốt hơn.
Sean Cameron

Sean, bạn sai rồi. Bạn đã chạy biểu thức, ít nhất một lần ??
avihil

Nó vẫn sai. Nó dẫn đến dấu ngoặc kép xung quanh các mục mảng, không phải dấu ngoặc đơn. Thêm vào đó, nó dựa vào một giả định về định dạng "kiểm tra ()" in dữ liệu, làm cho nó dễ vỡ.
Andrew Hodgkinson

['1', '2', '3']. Bản đồ {| o | "\ '# {o} \'"} .join (',')
avihil

7

Tôi thấy cách này có thể đọc và rubyish:

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

Và một biến thể khác

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

Bạn có thể sử dụng một số phương pháp lập trình chức năng, chuyển đổi dữ liệu:

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


-5

array.inspect.inspect.gsub(/\[|\]/, "") có thể làm trò bịp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.