metodă: String#gsub

returnează o copie a str cu toate aparițiile de model substituite pentru al doilea argument. Modelul este de obicei un Regexp; dacă este dat ca un șir, orice metacaractere de expresie regulată pe care le conține vor fi interpretate literal, de ex. \d se va potrivi cu un backslash urmat de ‘d’, în loc de o cifră.

dacă replacement este un șir, acesta va fi înlocuit cu textul potrivit. Poate conține referințe înapoi la grupurile de captare ale modelului de forma \d, unde d este un număr de grup sau \k<n>, unde n este un nume de grup. În mod similar, \&, \', \`, și + corespund variabilelor speciale, $&, $', $`, și $+, respectiv. (A se vedea regexp.rdoc pentru detalii.) este același cu \&. \ este interpretat ca o evadare, adică un singur backslash. Rețineți că, în replacement variabilele speciale de potrivire, cum ar fi $&, nu se vor referi la meciul curent.

dacă al doilea argument este un Hash, iar textul potrivit este una dintre cheile sale, valoarea corespunzătoare este șirul de înlocuire.

în formularul bloc, șirul de potrivire curent este transmis ca parametru și variabile precum , , $`, $&, și $' va fi setat corespunzător. (A se vedea regexp.rdoc pentru detalii.) Valoarea returnată de bloc va fi înlocuită pentru meciul de pe fiecare apel.

când nu este furnizat nici un bloc, nici un al doilea argument, un Enumerator este returnat.

"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*"

rețineți că un șir literal consumă backslash-uri. (A se vedea sintaxă/literali.rdoc pentru detalii despre literali șir.) Back-referințele sunt de obicei precedate de un backslash suplimentar. De exemplu, dacă doriți să scrieți o referință înapoi \& în replacement cu un șir dublu citat literal, trebuie să scrieți: "..\&..". Dacă doriți să scrieți un șir de referință Non-back \& în replacement, trebuie mai întâi să scăpați de backslash pentru a împiedica această metodă să o interpreteze ca o referință înapoi și apoi trebuie să scăpați din nou de backslash-uri pentru a împiedica un șir literal să le consume: "..\\&..". Poate doriți să utilizați formularul bloc pentru a evita o mulțime de backslash-uri.

Lasă un răspuns

Adresa ta de email nu va fi publicată.