我怎么能用数组元素做一个gsub?

时间:2017-06-26 04:33:20

标签: ruby gsub

如何替换像这样的字符串

我觉得这样的事情

inputx.gsub(/variable1/,string1.split(";")[i])

但我不知道我怎么能做这个代码

name1;variable1 
name;variable1 
name3;variable1 

通过

dog;watch;rock

获取此

name1;dog
name;watch
name3;rock

string1 =>狗;观察这个字符串我试图拆分替换每个字符串variable1

请帮帮我

4 个答案:

答案 0 :(得分:2)

subst = "dog;watch;rock".split ';'
input.gsub(/variable1/) do subst.shift end
#⇒ "name1;dog \n   name;watch \n   name3;rock"

答案 1 :(得分:1)

给出(假设)此输入:

inputx = <<-EOD
name1;variable1
name;variable1
name3;variable1
EOD
#=> "name1;variable1\nname;variable1\nname3;variable1\n"

string1 = 'dog;watch;rock'
#=> "dog;watch;rock"

您可以链接gsubwith_index以根据其索引执行替换:

inputx.gsub('variable1').with_index { |_, i| string1.split(';')[i] }
#=> "name1;dog\nname;watch\nname3;rock\n"

您也可以事先执行split

values = string1.split(';')
#=> ["dog", "watch", "rock"]

inputx.gsub('variable1').with_index { |_, i| values[i] }
#=> "name1;dog\nname;watch\nname3;rock\n"

答案 2 :(得分:0)

我不确定是否有办法使用.gsub()。实现您想要的一个简单方法如下:

str = "dog;watch;rock"

array = str.split(";")

array.each_with_index do |str, i|
    array[i] = "name#{i + 1};#{str}"
end

puts array

输出:

name1;dog
name2;watch
name3;rock

答案 3 :(得分:-1)

file intro2 =&gt;狗;手表;岩

文件介绍

name1;variable1 
  name;variable1 
 name3;variable1     

ruby​​代码

  ruby  -e   '   n=0; input3= File.read("intro");string1= File.read("intro2")    ;input3x=input3.gsub("variable1") { val =string1.split(";")[n].to_s; n+=1; val }  ;print input3x' >gggf