metod: String#gsub

returnerar en kopia av str med alla förekomster av mönster ersatt för det andra argumentet. Mönstret är vanligtvis en Regexp; om det ges som en sträng, kommer alla reguljära uttryck metatecken det innehåller tolkas bokstavligt, t.ex. \d matchar ett backslash följt av ’d’, istället för en siffra.

om replacement är en sträng kommer den att ersättas med den matchade texten. Det kan innehålla bakåtreferenser till mönstrets fångstgrupper av formuläret \d, där d är ett gruppnummer eller \k<n>, där n är ett gruppnamn. På samma sätt, \&, \', \`, och + motsvarar speciella variabler, $&, $', $`, och $+, respektive. (Se regexp.rdoc för detaljer.) är samma som \&. \ tolkas som en flykt, dvs en enda backslash. Observera att inom replacement kommer de speciella matchningsvariablerna, till exempel $&, inte att hänvisa till den aktuella matchningen.

om det andra argumentet är en Hash, och den matchade texten är en av dess nycklar, är motsvarande värde ersättningssträngen.

i blockformen skickas den aktuella matchningssträngen in som en parameter och variabler som , , $`, $&, och $' kommer att ställas in på lämpligt sätt. (Se regexp.rdoc för detaljer.) Värdet som returneras av blocket kommer att ersättas för matchen på varje samtal.

när varken ett block eller ett andra argument levereras returneras en Uppräkare.

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

Observera att en sträng bokstav förbrukar backslashes. (Se syntax / bokstäver.rdoc för detaljer om strängbokstäver.) Back-referenser föregås vanligtvis av ett ytterligare backslash. Om du till exempel vill skriva en backreferens \& i replacement med en dubbelciterad sträng bokstavlig måste du skriva: "..\&..". Om du vill skriva en icke-back-referens sträng \& i replacement, måste du först Fly backslash för att förhindra denna metod från att tolka det som en back-referens, och sedan måste du fly backslash igen för att förhindra en sträng bokstav från att konsumera dem: "..\\&..". Du kanske vill använda blockformuläret för att undvika många backslashes.

Lämna ett svar

Din e-postadress kommer inte publiceras.