我正在使用gsub从文本文件中替换长字符串的一部分,例如
str.gsub!(/#{str1}/){"#{updates}"}
当字符串变长时,ruby返回错误,字符串太长。我怎么解决这个问题?有没有替代gsub可以做同样的工作?据我所知,gsub将生成原始数据的副本,效率很低。
答案 0 :(得分:6)
如果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
,你必须在某种循环中重复这种情况,直到你得到一个IndexError。
正则表达式很棒,但你的工具箱应该不只是锤子。
顺便说一句,如果str1
应该只是一个字符串,那么在将其插入正则表达式之前,你应该使用Regexp.escape
。