Преобразование массива Ruby в строку

178

У меня есть рубиновый массив, как ['12','34','35','231'].

Я хочу преобразовать его в строку, как '12','34','35','231'.

Как я могу это сделать?

Сачин Р
источник

Ответы:

315

Я присоединюсь к веселью с:

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

РЕДАКТИРОВАТЬ:

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

Некоторая строковая интерполяция для добавления первой и последней одинарных кавычек: P

коррозия
источник
1
Это приводит к "12,34,35,231". В результате отсутствуют одинарные кавычки.
Бернард
1
Хорошо, добавлена ​​некоторая интерполяция строк для добавления первой и последней одинарных кавычек: P
коррозия
как вернуть это?
zx1986
что ты имеешь в виду revert @ zx1986
коррозия
К сожалению, я понял. JSON.parse("[12, 39, 100]")вернет массив.
zx1986
43
> a = ['12','34','35','231']
> a.map { |i| "'" + i.to_s + "'" }.join(",")
=> "'12','34','35','231'"
Shadwell
источник
6
Возможно, "'#{i}'"вместо этого.
Младен Ябланович
не думаю, что карта нужна. Присоединиться должно сделать свое дело. см. ниже
Джурдик
31

попробуй этот код ['12','34','35','231']*","

даст вам результат "12,34,35,231"

Я надеюсь, что это результат вас, дайте мне знать

Ранджит Кумар Венгала
источник
Я думаю, что у ОП должна быть одинарная кавычка.
Laf
11
array.map{ |i|  %Q('#{i}') }.join(',')
wildcountry
источник
1
Цитируя Младена: «Возможно, "'#{i}'"вместо этого используйте».
Эндрю Гримм
9
string_arr.map(&:inspect).join(',') # or other separator
avihil
источник
Это не дает правильного вывода - значения должны быть заключены в одинарные кавычки. Если бы это был желаемый результат, то string_arr.join (",") был бы лучшим вариантом.
Шон Кэмерон
Шон, ты не прав. Вы запускали выражение хотя бы раз?
Avihil
Это все еще неправильно. Это приводит к двойным кавычкам вокруг элементов массива, а не кавычкам. Кроме того, он основан на предположении о формате, который «inspect ()» печатает, что делает его хрупким.
Эндрю Ходжкинсон
['1', '2', '3']. Map {| o | "\ '# {o} \'"} .join (',')
avihil
7

Я нахожу этот способ читабельным и рубиновым:

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

p  ['12','34','35','231'].map(&add_quotes).join(',') => "'12','34','35','231'"
hirolau
источник
5
> puts "'"+['12','34','35','231']*"','"+"'"
'12','34','35','231'

> puts ['12','34','35','231'].inspect[1...-1].gsub('"',"'")
'12', '34', '35', '231'
Джон Ла Рой
источник
4

И еще один вариант

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]
...
NinjaCat
источник
3
irb(main):027:0> puts ['12','34','35','231'].inspect.to_s[1..-2].gsub('"', "'")
'12', '34', '35', '231'
=> nil
ngoozeff
источник
2

Вы можете использовать некоторый подход функционального программирования, преобразуя данные:

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

Питер Тот - Тома
источник
-5

array.inspect.inspect.gsub(/\[|\]/, "") мог сделать трюк

Кристиан
источник