Nella mia app ho bisogno di essere in grado di trovare tutte le sottostringhe del numero, quindi scansionare ciascuna, trovare la prima che corrisponde a un intervallo (ad esempio tra 5 e 15) e sostituire quell'istanza con un'altra stringa "X".ruby regex - come sostituire l'istanza nth di una corrispondenza in una stringa
mia stringa di prova s = "1 foo 100 bar 10 gee 1"
Il mio modello iniziale è qualsiasi stringa di 1 o più cifre, ad esempio, re = Regexp.new(/\d+/)
matches = s.scan(re)
dà ["1", "100", "10", "1"]
Se voglio sostituire il match ennesimo, e solo il Nona partita, con "X" come faccio?
Per esempio se voglio sostituire la terza partita "10" (partite [2]) non posso solo dire s[matches[2]] = "X"
causa che fa due sostituzioni
"1 foo X0 bar X gee 1"
Qualsiasi aiuto sarebbe apprezzato !
devo ammettere che non mi è mai accaduto di sostituire le altre partite con se stesse ... intelligente! Grazie! – jpwynn
Preferisco usare 'next' invece di restituire il valore originale. – bwest
L'uso dei blocchi ha aiutato a risolvere il mio problema. Grazie! – sbos61