2012-11-11 26 views
1

我以前使用gsub進行正則表達式匹配,但是我應該怎樣調用字符串文字?如何在Ruby中搜索並替換字符串(不是正則表達式)?

我想用pair[1]代替pair[0],無論在文件中找到pair[0]

text = File.read(fname) 
@hash_old_to_new.each do 
    |pair| 
    puts "\tReplacing " + pair[0] + " with " + pair[1] 
    # result = text.gsub(/pair[0]/, pair[1]) <--- this is no good 
end 
File.open(fname, "w") { |file| file << result } 
+1

gsub? –

回答

4

gsub也適用於字符串文字。

text.gsub!(pair[0], pair[1]) 

注意gsub返回一個新字符串,而不是修改現有的字符串「到位」。由於您的代碼編寫方式,這會導致您丟失更新。您可以使用gsub!,否則你可以鏈接調用是這樣的:

text = text.gsub(pair[0], pair[1]) 
+0

+1 ty'gsub!'提示 - 我會試試 – kfmfe04

1

你是不遠處的答案:

直接使用字符串GSUB:

result = text.gsub(pair[0], pair[1]) 

或者使用字符串在正則表達式中:

result = text.gsub(/#{pair[0]}/, pair[1]) 
+0

沒有理由使用文字正則表達式。不知道這是如何改善現有的答案。 –

+0

@DaveNewton我只是提供所有可能的解決方案,以防有人搜索並進入此處。 – texasbruce

+0

+1 - 第二個例子實際上非常方便:ty – kfmfe04