How do I limit the number of replacements when using gsub?

浪子不回头ぞ 提交于 2019-12-12 08:48:38

问题


How do you limit the number of replacements made by String#gsub in Ruby?

In PHP this can be easy done with preg_replace which takes a parameter for limiting replacements, but I can't figure out how to do this in Ruby.


回答1:


gsub replaces all occurences.

You can try String#sub

http://ruby-doc.org/core/classes/String.html#M001185




回答2:


You can create a counter and decrement that within a gsub loop.

str = 'aaaaaaaaaa'
count = 5
p str.gsub(/a/){if count.zero? then $& else count -= 1; 'x' end}
# => "xxxxxaaaaa"



回答3:


str = 'aaaaaaaaaa'
# The following is so that the variable new_string exists in this scope, 
# not just within the block
new_string = str 
5.times do 
  new_string = new_string.sub('a', 'x')
end


来源:https://stackoverflow.com/questions/6009653/how-do-i-limit-the-number-of-replacements-when-using-gsub

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!