2011-05-15 14 views

Respuesta

4

Puede crear un contador y decremento de que dentro de un bucle gsub.

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

Funciona, pero es feo. ¿No hay una mejor manera? –

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 
+2

Ya veo. Esto es más agradable. Pero, cuando la cadena de reemplazo coincide con la expresión regular, por ejemplo, 'sub ('a', 'cat')', necesita modificar la expresión regular, por ejemplo, 'sub (/ \ Ga /, 'cat')'. O, ¿es esto correcto? – sawa

+0

@sawa: ¡Buen punto! –

+0

En realidad, '\ G' no parece funcionar para' sub'. Se restablece cada vez. – sawa

Cuestiones relacionadas