Ruby: String#sub String#gsubの置換文字列における特殊文字
Rubyで文字列置換を行う際に頻繁に使用するStringクラスのString#subやString#gsubを下記のように使用する場合
'OriginalText'.sub(pattern, replace)
第二引数のreplaceには、patternにマッチした結果によって置換内容を変化させるための「\」から始まる特殊文字がいくつか用意されています。
instance method String#sub
これを知らずにreplaceに「\」から始まる文字を含めてしまうと意図に反した結果となることがあります。
#例:「I'm John Doe.」を「I\'m John Doe.」に変換したい "I'm John Doe.".sub("'", "\\'") #=>Im John Doe.m John Doe.
これは下記のようにreplaceをブロックとして渡すことで意図通りに実行結果となります。
'OriginalText'.sub(pattern){replace}
#例: "I'm John Doe.".sub("'"){"\\'"} #=>I\'m John Doe.
以前知らずにハマったのを思い出したのでメモ。