Ruby: Как мне объединить элементы массива вместе с префиксом? - PullRequest
19 голосов
/ 29 апреля 2009

У меня есть такой массив:

["marblecake", "also", "the", 1337]

Я хотел бы получить строку, которая содержит каждый элемент массива с префиксом какой-либо указанной строки, а затем соединить вместе другой указанной строкой. Например,

["marblecake", "also", "the", 1337].join_with_prefix("%", "__")

должно привести к

# => %marblecake__%also__%the__%1337

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

Ответы [ 4 ]

42 голосов
/ 29 апреля 2009

Если ваш массив в a, то этот однострочный сделает это

a.map { |k| "%#{k}" }.join("_")

Вы можете легко поместить это в свою собственную функцию - даже добавить ее в класс Array, чтобы можно было вызывать ее в массиве, как в вашем примере.

Обратите внимание, что "!" версия карты (map!) изменит массив на месте - возможно, не ваше намерение.

10 голосов
/ 21 мая 2015

Хотя это очень старый вопрос, я бы хотел добавить следующее:

a.any? && "%".+(a.join("__%"))
2 голосов
/ 29 апреля 2009

Согласно приведенному выше предложению:

class Array
  def join_with_prefix(prefix,separator)
    self.collect {|e| prefix.to_s + e }.join(separator)
  end
end

p ['ab','cd','ef'].join_with_prefix('%','__')
=> "%ab__%cd__%ef"
0 голосов
/ 16 августа 2012

Я искал решение этого сегодня. Я нашел этот вопрос. Это было мое решение.

array = ["marblecake", "also", "the", 1337];
arrayString = ''

array.each{|x| arrayString += "%" + x + "__"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...