Ruby 按字符联接数组?
如果我有一个数组:Ruby 按字符联接数组?,ruby,arrays,Ruby,Arrays,如果我有一个数组: array = ["a","b","c","d","e","f"] 我想把它分成2个数组,然后展平它们,但在展平它们之前,添加一个像a/这样的字符,我该怎么做 我尝试了以下方法,即在每个子数组之后而不是在切片的第n个值之后进行连接: array.each_slice(5).map.join("/") 是否可以使用正则表达式,如在5次计数后\w?看起来您想要得到[a,b,c,/,d,e,f] (array.each_slice(3).inject([]) {|res, it
array = ["a","b","c","d","e","f"]
我想把它分成2个数组,然后展平它们,但在展平它们之前,添加一个像a/这样的字符,我该怎么做
我尝试了以下方法,即在每个子数组之后而不是在切片的第n个值之后进行连接:
array.each_slice(5).map.join("/")
是否可以使用正则表达式,如在5次计数后\w?看起来您想要得到[a,b,c,/,d,e,f]
(array.each_slice(3).inject([]) {|res, item| res << '/' unless res.empty?; res << item }).flatten
# => ["a", "b", "c", "/", "d", "e", "f"]
结果应该是什么样的?将它们展平?你这是什么意思?正如Ruby方法一样。flatte应用于嵌套数组,而您似乎没有。一旦我将其分割为多个数组,它将是一个数组数组,我可以将其展平。使用array=[aa,bb,cc,dd],您的代码将返回[a,a,b,/,b,c,c,/,d,d]。看起来这不是OP想要的。
(array.each_slice(3).inject([]) {|res, item| res << '/' unless res.empty?; res << item }).flatten
# => ["a", "b", "c", "/", "d", "e", "f"]
array.join.gsub(/(\w{3})/, '\1/').chomp('/').split('')