Как ограничить количество замен при использовании gsub? - PullRequest
6 голосов
/ 15 мая 2011

Как вы ограничиваете количество замен, сделанных String # gsub в Ruby?

В PHP это легко сделать с помощью preg_replace, который принимает параметр для ограничения замен, но я не могу понять, как это сделать в Ruby.

Ответы [ 3 ]

4 голосов
/ 16 мая 2011

Вы можете создать счетчик и уменьшить его в цикле gsub.

str = 'aaaaaaaaaa'
count = 5
p str.gsub(/a/){if count.zero? then $& else count -= 1; 'x' end}
# => "xxxxxaaaaa"
3 голосов
/ 16 мая 2011
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
3 голосов
/ 15 мая 2011

gsub заменяет все вхождения.

Вы можете попробовать String # sub

http://ruby -doc.org / ядро ​​/ классов / String.html # M001185

...