gsub を使用して、テキスト ファイルから長い文字列の一部を置き換えていました。
str.gsub!(/#{str1}/){"#{updates}"}
文字列が長くなると、ruby が文字列が長すぎるというエラーを返しました。どうすればこの問題を解決できますか? 同じ作業を行うことができるgsubの代替品はありますか? 私の知る限り、gsub は元のデータのコピーを作成しますが、これは非効率的です。
str1
が正規表現フラグメントではなく単なる文字列の場合、次のようなことができます。
str[str1] = updates
str1
の部分をstr
所定の位置に置き換えupdates
ます。例えば:
>> s = 'Where is X house?'
=> "Where is X house?"
>> s['X'] = 'pancakes'
=> "pancakes"
>> s
=> "Where is pancakes house?"
str1
ただし、すべてのsを置き換えたい場合は、 IndexError が発生するまで、何らかのループでそれを繰り返す必要がstr
あります。
正規表現は優れていますが、ツールボックスにはハンマー以上のものを用意する必要があります。
ところで、str1
が単なる文字列であると想定されている場合はRegexp.escape
、正規表現に補間する前に使用する必要があります。