Method: String#gsub

Restituisce una copia di str con tutte le occorrenze di pattern sostituite per il secondo argomento. Il pattern è tipicamente una Regexp; se dato come Stringa, qualsiasi metacaratteri di espressione regolare che contiene verrà interpretato letteralmente, ad esempio \d corrisponderà a una barra rovesciata seguita da ‘d’, invece di una cifra.

Se replacement è una Stringa, verrà sostituito il testo corrispondente. Può contenere riferimenti ai gruppi di acquisizione del modello del modulo \d, dove d è un numero di gruppo, o \k<n>, dove n è un nome di gruppo. Allo stesso modo, \&, \', \`, e + corrispondono a variabili speciali, $&, $', $`, e $+, rispettivamente. (Vedi regexp.rdoc per i dettagli.) è lo stesso di \&. \ è interpretato come una fuga, cioè una singola barra rovesciata. Si noti che, all’interno di replacement le variabili di corrispondenza speciali, ad esempio $&, non si riferiscono alla corrispondenza corrente.

Se il secondo argomento è un Hash e il testo abbinato è una delle sue chiavi, il valore corrispondente è la stringa sostitutiva.

Nel modulo di blocco, la stringa di corrispondenza corrente viene passata come parametro e variabili come , , $`, $&, e $' sarà impostato in modo appropriato. (Vedi regexp.rdoc per i dettagli.) Il valore restituito dal blocco sarà sostituito per la corrispondenza ad ogni chiamata.

Quando non viene fornito né un blocco né un secondo argomento, viene restituito un Enumeratore.

"hello".gsub(//, '*') #=> "h*ll*""hello".gsub(/()/, '<>') #=> "h<e>ll<o>""hello".gsub(/./) {|s| s.ord.to_s + ' '} #=> "104 101 108 108 111 ""hello".gsub(/(?<foo>)/, '{\k<foo>}') #=> "h{e}ll{o}"'hello'.gsub(//, 'e' => 3, 'o' => '*') #=> "h3ll*"

Si noti che una stringa letterale consuma barre rovesciate. (Vedi sintassi / letterali.rdoc per i dettagli sui letterali stringa.) I riferimenti posteriori sono in genere preceduti da una barra rovesciata aggiuntiva. Ad esempio, se si desidera scrivere un back-reference \& in replacement con una stringa letterale a due virgolette, è necessario scrivere: "..\&..". Se si desidera scrivere una stringa non-back-reference \& in replacement, è necessario prima sfuggire alla barra rovesciata per impedire a questo metodo di interpretarlo come un back-reference, e quindi è necessario sfuggire nuovamente alle barre rovesciate per impedire a una stringa letterale di consumarle: "..\\&..". Si consiglia di utilizzare il modulo di blocco per evitare un sacco di barre rovesciate.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.