How do I limit the number of replacements when usi

2020-07-10 09:17发布

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.

标签: ruby gsub
3条回答
【Aperson】
2楼-- · 2020-07-10 09:31

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楼-- · 2020-07-10 09:36
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
查看更多
beautiful°
4楼-- · 2020-07-10 09:38

gsub replaces all occurences.

You can try String#sub

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

查看更多
登录 后发表回答