Как преобразовать массив строк в строку через запятую?
у меня есть массив:
array = ["10", "20", "50", "99"]
и хотите преобразовать его в простой список строк, разделенных запятыми, как это:
"10", "20", "50", "99"
4 ответа:
array.join(',')
будет почти делать то, что вы хотите; он не будет сохранять кавычки вокруг значений, ни пробелы после.для сохранения кавычек и пробелов:
array.map{|item| %Q{"#{item}"}}.join(', ')
Это будет печатать"\"10\", \"20\", \"50\", \"99\""
. Экранированные кавычки необходимы, если вопрос действительно вызывает одну строку.документация
%Q
:строковые литералы.вы может использовать
inspect
как предложил в другом ответе, я бы сказал это личные предпочтения. Я бы не стал, иди посмотри на исходный код для этого и выбирайте сами.полезно в сторону:
array.to_sentence
даст вам" 1, 2, 3 и 4 " стиль вывода, который может быть приятно!
несколько ответов предложили решения с использованием
#map
,#inspect
,#join
. Все они не могут получить определенные сведения о кодировке CSV, правильные для крайних случаев, включающих встроенные запятые и/или строковые разделители в элементах.Это, наверное, лучшая идея, чтобы использовать stdlib класс CSV затем свернуть свой собственный.
irb> require 'csv' => true irb> a = [10,'1,234','J.R. "Bob" Dobbs',3.14159] => [10, "1,234", "J.R. \"Bob\" Dobbs", 3.14159] irb> puts a.to_csv 10,"1,234","J.R. ""Bob"" Dobbs",3.14159
карте.решения для объединения достаточны, если эта кодировка не должна заботиться о встроенных разделителях или предназначена для некоторых только внутреннее представление, но они потерпят неудачу, если будут генерировать данные для обмена с другими программами, которые ожидают значения, разделенные запятыми (CSV), как обычно понимаемое представление.