visszaadja az str egy példányát, a minta minden előfordulásával helyettesítve a második argumentumot. A minta jellemzően a Regexp; ha karakterláncként adják meg, akkor a benne lévő reguláris kifejezési metakaraktereket szó szerint értelmezzük, pl. \d
egy számjegy helyett egy ‘d’ betűvel követi a fordított perjelet.
ha a replacement
karakterlánc, akkor az illesztett szöveg helyébe lép. Tartalmazhat visszautalásokat a minta rögzítési csoportjaira \d
formában, ahol d egy csoportszám, vagy \k<n>
, ahol n egy csoport neve. Hasonlóképpen, \&
, \'
, \`
, és +
speciális változóknak felel meg, $&
, $'
, $`
, illetve $+
. (Lásd regexp.rdoc a részletekért.) ugyanaz, mint
\&
. \
úgy értelmezik, mint egy menekülés, azaz egyetlen backslash. Vegye figyelembe, hogy a replacement
– en belül a speciális egyezési változók, például $&
, nem fognak hivatkozni az aktuális egyezésre.
ha a második argumentum Hash, és az illesztett szöveg az egyik kulcsa, akkor a megfelelő érték a helyettesítő karakterlánc.
a blokk formában az aktuális egyezési karakterlánc paraméterként kerül átadásra, és olyan változók, mint ,
,
$`
, $&
, és $'
megfelelően lesz beállítva. (Lásd regexp.rdoc a részletekért.) A blokk által visszaadott érték minden hívásnál helyettesíti a mérkőzést.
ha sem blokkot, sem második argumentumot nem adunk meg, akkor egy számlálót adunk vissza.
"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*"
vegye figyelembe, hogy a string literal fordított perjeleket fogyaszt. (Lásd szintaxis / literálok.rdoc a string literals részleteiről.) A Back-referenciákat általában egy további backslash előzi meg. Például, ha \&
back-reference-t szeretne írni replacement
– ben egy dupla idézetű karakterlánc literállal, akkor a következőt kell írnia: "..\&.."
. Ha EGY \&
karakterláncot akarsz írni replacement
-ben, először meg kell szabadulnod a fordított perjeltől, hogy megakadályozd, hogy ez a módszer visszamenőleges hivatkozásként értelmezze, majd újra el kell kerülnöd a fordított perjeleket, hogy megakadályozd, hogy egy karakterlánc literál felhasználja őket: "..\\&.."
. Érdemes lehet használni a blokk űrlapot, hogy elkerülje a sok visszavágást.