我正在使用 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
其插入到正则表达式之前使用它。