Ruby - 用数组的顺序元素替换字符串中的字符

时间:2016-12-06 13:38:13

标签: ruby-on-rails ruby

我有一个字符串:

a = 'bla \n bla \n bla \n'

一个数组:

b = ['1', '2', '3']

我想搜索字符串,并用数组中的第(n-1)个元素替换\ n的每个第n个实例,结果是:

a = 'bla 1 bla 2 bla 3'

这对我来说最简单的方法是什么?

3 个答案:

答案 0 :(得分:5)

带有块的

String#gsub简化了这个工作:

a.gsub('\n') { b.shift }

请注意,Array#shift会修改原始数组。如果这是一个问题,请先复制一份(b.dup)。

答案 1 :(得分:1)

您可以使用方法sub

a = 'bla \n bla \n bla \n'
b = ['1', '2', '3']
b.each { |i| a.sub!('\n', i) }
#> a
#=> "bla 1 bla 2 bla 3" 

答案 2 :(得分:1)

使用String#splitArray#zip

的另一种方法
a.split('\n').zip(b).join
#=> "bla 1 bla 2 bla 3"