2

我以前使用 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 }
4

2 回答 2

6

gsub也适用于字符串文字。

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

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

text = text.gsub(pair[0], pair[1])
于 2012-11-11T16:34:56.073 回答
1

你离答案不远:

在 gsub 中直接使用字符串:

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

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

result = text.gsub( /#{pair[0]}/, pair[1] )
于 2012-11-11T16:40:44.167 回答