如何在Ruby中搜索和替换字符串(而不是正则表达式)?

时间:2012-11-11 16:33:02

标签: ruby replace

我之前使用gsub进行正则表达式匹配,但是我应该为字符串文字调用什么?

我希望将pair[0]替换为pair[1],只要文件中找到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 }

2 个答案:

答案 0 :(得分:4)

gsub也适用于字符串文字。

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

请注意gsub返回一个新的String,而不是“就地”修改现有的String。由于您的代码编写方式,这将导致您丢失更新。您可以使用gsub!,否则您可以链接这样的呼叫:

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

答案 1 :(得分:1)

你离答案不远:

直接在gsub中使用字符串:

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

或者在正则表达式中使用字符串:

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