Pregunta

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.

¿Fue útil?

Solución

gsub replaces all occurences.

You can try String#sub

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

Otros consejos

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"
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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top