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 に答える