2017-06-26 25 views
-3

我怎么能代替这样我怎么可以用数组元素做一个gsub?

字符串我认为像这样

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

但我不知道我怎么能由

dog;watch;rock 
为此代码

name1;variable1 
name;variable1 
name3;variable1 

欲获得此

name1;dog 
name;watch 
name3;rock 

string1 => dog; watch; rock;这个字符串我试着去拆分替换每个字符串VARIABLE1

请帮我

+0

string1 =>狗;看;岩石;这个字符串我试图分裂以取代每个字符串variable1 – alberto2

+1

什么是'name1; variable1 name; variable1 name3; variable1'?一个包含三个字符串的数组,即'[“name1; variable1”,“name; variable1”,“name3; variable1”]或单个多行字符串,即''name1; variable1 \ nname; variable1 \ nname3; variable1 “'还是别的? – Stefan

+0

试着用英文制定你的句子。我没有倒下。 – kiltek

回答

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 
+0

非常感谢您的回复;我也解决了我会公开另一个解决方案 – alberto2

-1

文件intro2 =>狗;钟表;岩石

文件介绍

name1;variable1 
    name;variable1 
name3;variable1  

红宝石代码

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 
2
subst = "dog;watch;rock".split ';' 
input.gsub(/variable1/) do subst.shift end 
#⇒ "name1;dog \n name;watch \n name3;rock" 
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" 
相关问题