我用gsub替换文本文件中长字符串的一部分。

      str.gsub!(/#{str1}/){"#{updates}"}

当字符串变长时,ruby返回一个错误,该字符串太长。我怎样才能解决这个问题?有没有可以做同样工作的gsub的替代品?据我所知,gsub将生成原始数据的副本,这是低效的。

最佳答案

如果str1只是一个字符串而不是正则表达式片段,那么您可以执行以下操作:

str[str1] = updates

str1替换strupdates部分。例如:
>> s = 'Where is X house?'
=> "Where is X house?"
>> s['X'] = 'pancakes'
=> "pancakes"
>> s
=> "Where is pancakes house?"

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

10-08 09:24
查看更多