Method: String#gsub

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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.