2

我正在使用 gsub 替换文本文件中长字符串的一部分,例如。

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

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

4

1 回答 1

6

如果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如果您想替换所有s ,则必须在某种循环中重复该操作,直到出现 IndexError str

正则表达式很棒,但你的工具箱应该不仅仅是一把锤子。

顺便说一句,如果str1应该只是一个字符串,您应该在将Regexp.escape其插入到正则表达式之前使用它。

于 2012-09-11T23:41:36.960 回答