用长串替换

时间:2012-09-11 23:11:49

标签: ruby regex string

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

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

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

1 个答案:

答案 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