Metoda: String#gsub

Vrátí kopii str se všechny výskyty vzoru nahradil pro druhý argument. Vzor je obvykle Regexp; je-li zadána jako Řetězec, jakékoliv regulární výraz metaznaky, které obsahuje, budou vykládat doslova, např. \d bude odpovídat zpětné lomítko následované „d“, místo číslice.

pokud replacement je řetězec, bude nahrazen odpovídajícím textem. Může obsahovat back-odkazy na vzor je zachytit skupin formuláře \d, kde d je číslo skupiny, nebo \k<n>, kde n je název skupiny. Podobně, \&, \', \`, a + odpovídají speciální proměnné, $&, $', $`, a $+, resp. (Viz regexp.rdoc podrobnosti.) je stejné jako \&. \ je interpretován jako únik, tj. jediné zpětné lomítko. Všimněte si, že v rámci replacement speciální proměnné shody, například $&, nebudou odkazovat na aktuální zápas.

pokud je druhý argument Hash a odpovídající text je jedním z jeho klíčů, odpovídající hodnota je náhradní řetězec.

ve formě bloku je aktuální řetězec shody předán jako parametr a proměnné jako , , $`, $&, a $' bude nastaveno vhodně. (Viz regexp.rdoc podrobnosti.) Hodnota vrácená blokem bude nahrazena zápasem při každém hovoru.

pokud není zadán blok ani druhý argument, vrací se sčítač.

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

Všimněte si, že doslovný řetězec spotřebovává zpětná lomítka. (Viz syntaxe/literály.rdoc pro podrobnosti o řetězcových literálech.) Zpětné odkazy jsou obvykle předchází další zpětné lomítko. Například, pokud chcete napsat zpětný odkaz \& v replacement s dvojitým řetězcovým doslovem, musíte napsat: "..\&..". Pokud chcete napsat non-zpět-odkaz na řetězec, \& replacement, musíte nejprve uniknout zpětné lomítko, aby se zabránilo této metody z výkladu to jako back-referenční, a pak se budete muset uniknout zpětná lomítka znovu, aby se zabránilo string literal od jejich náročné: "..\\&..". Možná budete chtít použít blokový formulář, abyste se vyhnuli mnoha zpětným lomítkům.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.