我有一个像这样的数组:
["marblecake", "also", "the", 1337]
我想找回一个字符串,其中包含以某个指定字符串为前缀的数组的每个元素,然后由另一个指定的字符串连接在一起。例如,
["marblecake", "also", "the", 1337].join_with_prefix("%", "__")
应该导致
# => %marblecake__%also__%the__%1337
我该怎么做?
答案 0 :(得分:41)
如果你的阵列在a
,那么这个单行将会这样做
a.map { |k| "%#{k}" }.join("_")
您可以轻松地将其添加到您自己的函数中 - 甚至可以将其添加到Array
类,以便您可以在数组中调用它,就像在您的示例中一样。
注意'!'地图版本(map!
)将修改数组 - 也许不是你的意图。
答案 1 :(得分:10)
虽然这是一个非常古老的问题,但我想补充一点:
a.any? && "%".+(a.join("__%"))
答案 2 :(得分:2)
根据上述建议:
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"
答案 3 :(得分:-1)
我今天正在寻找解决方案。我发现了这个问题。这是我的解决方案。
array = ["marblecake", "also", "the", 1337];
arrayString = ''
array.each{|x| arrayString += "%" + x + "__"}