Comment limitez-vous le nombre de remplacements fabriqués par chaîne # GSUB dans RUBY? P>
Dans PHP, cela peut être facile à faire avec Preg_replace qui prend un paramètre pour limiter les remplacements, mais je ne peux pas comprendre comment faire cela dans Ruby. P>
4 Réponses :
gsub remplace toutes les occurrences. P>
Vous pouvez essayer une chaîne # sous p>
Mince! J'ai parcouru les fonctions de cordes pour trouver autre chose puis GSub, et pourquoi je n'ai pas remarqué Sub!? Merci!
Vous pouvez créer un compteur et décrémenter dans une boucle GSUB.
str = 'aaaaaaaaaa' count = 5 p str.gsub(/a/){if count.zero? then $& else count -= 1; 'x' end} # => "xxxxxaaaaa"
Travaille, mais c'est moche. N'y a-t-il pas une meilleure façon?
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
Je vois. C'est mieux. Mais, lorsque la chaîne de remplacement correspond à la regex, par ex. SUB ('A', 'CAT') CODE>, vous devez modifier la regex, par exemple,
SUB (/ \ GA /, 'CAT') code>. Ou est-ce correct?
En fait, \ g code> ne semblait pas fonctionner pour
sous code>. Il est réinitialisé à chaque fois.
Vous pouvez utiliser la méthode Vous pouvez également utiliser Vous pouvez également utiliser la méthode de l'index de regex avec un Mais vous ne pouvez pas utiliser de remplacement qui correspond à la regex pour ce dernier: p> str.split code>, qui prend une limite, avec un code> joindre code> avec le remplacement:
gsub code> avec un bloc et Compte et ternaire: p>
.times code> boucle: p>