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

kfm*_*e04 2 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 }
Run Code Online (Sandbox Code Playgroud)

Ale*_*x D 5

gsub 也适用于字符串文字。

text.gsub!(pair[0], pair[1])
Run Code Online (Sandbox Code Playgroud)

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

text = text.gsub(pair[0], pair[1])
Run Code Online (Sandbox Code Playgroud)