我用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
中的所有str
s,则必须在某种循环中重复此操作,直到找到索引器为止。正则表达式很好,但你的工具箱应该不仅仅有一把锤子。
顺便说一句,如果
str1
应该只是一个字符串,那么在将其插入正则表达式之前,应该对其使用Regexp.escape
。