Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

ruby

gsub

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.

like image 271
Ion Br. Avatar asked May 15 '11 16:05

Ion Br.


3 Answers

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"
like image 178
sawa Avatar answered Sep 21 '22 13:09

sawa


gsub replaces all occurences.

You can try String#sub

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

like image 27
manojlds Avatar answered Sep 20 '22 13:09

manojlds


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
like image 36
Andrew Grimm Avatar answered Sep 20 '22 13:09

Andrew Grimm