我正在使用gsub從文本文件中替換長字符串的部分,例如。用長字符串替換
str.gsub!(/#{str1}/){"#{updates}"}
當字符串變長時,ruby返回字符串太長的錯誤。我怎麼解決這個問題?是否有任何可以做同樣工作的gsub替代品?據我所知,gsub會生成原始數據的副本,效率不高。
我正在使用gsub從文本文件中替換長字符串的部分,例如。用長字符串替換
str.gsub!(/#{str1}/){"#{updates}"}
當字符串變長時,ruby返回字符串太長的錯誤。我怎麼解決這個問題?是否有任何可以做同樣工作的gsub替代品?據我所知,gsub會生成原始數據的副本,效率不高。
如果str1
只是一個字符串,而不是一個正則表達式的片段,那麼你可以做這樣的事情:
str[str1] = updates
到位與updates
取代的str
的str1
部分。例如:
>> s = 'Where is X house?'
=> "Where is X house?"
>> s['X'] = 'pancakes'
=> "pancakes"
>> s
=> "Where is pancakes house?"
你不得不重複,在某種形式的循環,直到你得到一個IndexError,如果你想在str
全部更換str1
小號雖然。
正則表達式很棒,但您的工具箱應該不僅僅是一把錘子。
順便說一句,如果str1
應該只是一個字符串,那麼在插入正則表達式之前,應該先使用Regexp.escape
。
謝謝!這樣可行。 Str []方法似乎不使用正則表達式。 –
很難說你實際上在問什麼,但我懷疑它可能適用於'str.gsub! str1,updates' –
@JoshuaCheek:對源代碼的快速回顧表明,將一個字符串傳遞給'gsub'仍然會構建一個正則表達式,所以不會有幫助。如果您好奇,請查看'string.c'中的'get_pat'。 –
是的,看起來你是對的。 –