Ruby: How to join elements of an array together with a prefix

arraysrubystring

I have an array like so:

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

I would like to get back a string which contains each element of the array prefixed by some specified string, then joined together by another specified string. For example,

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

should result in

# => %marblecake__%also__%the__%1337

How might I do this?

Best Solution

If your array is in a then this one-liner will do it

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

You could easily put this in a function of your own - even add it to the Array class so that you can call it on an array, like in your example.

Note that the '!' version of map (map!) will modify the array in place - perhaps not your intent.