Metode: String#gsub

Returnerer en kopi av str med alle forekomster av mønster erstattet av det andre argumentet. Mønsteret er Vanligvis En Regexp; hvis gitt som En Streng, vil ethvert regulært uttrykk metategn det inneholder tolkes bokstavelig, f.eks. vil \d matche en skråstrek etterfulgt av ‘d’, i stedet for et siffer.

hvis replacement er En Streng, vil den bli erstattet av den samsvarende teksten. Den kan inneholde referanser til mønsterets fangstgrupper i skjemaet \d , der d er et gruppenummer, eller \k<n>, der n er et gruppenavn. Tilsvarende, \&, \', \`, og + tilsvarer spesielle variabler, $&, $', $`, og $+, henholdsvis. (Se regexp.rdoc for detaljer.) er det samme som \&. \ tolkes som en flukt, dvs. en enkelt tilbakeslag. Merk at i replacement vil de spesielle matchvariablene, for eksempel $&, ikke referere til gjeldende kamp.

Hvis det andre argumentet er En Hash, og den samsvarende teksten er en av nøklene, er den tilsvarende verdien erstatningsstrengen.

i blokkskjemaet sendes gjeldende samsvarstreng inn som en parameter, og variabler som , , $`, $&, og $' vil bli satt på riktig måte. (Se regexp.rdoc for detaljer.) Verdien returnert av blokken vil bli erstattet av kampen på hver samtale.

når verken en blokk eller et annet argument leveres, returneres En Enumerator.

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

Merk at en streng bokstavelig bruker skråstreker. (Se syntaks / bokstaver.rdoc for detaljer om strenglitteraler.) Back-referanser er vanligvis innledes med en ekstra skråstrek. Hvis du for eksempel vil skrive en referanse \& i replacement med en dobbel sitert streng bokstavelig, må du skrive: "..\&..". Hvis du vil skrive en ikke-referansestreng \& i replacement, må du først unnslippe backslash for å forhindre at denne metoden tolker den som en back-referanse, og da må du unnslippe backslashes igjen for å forhindre at en streng bokstavelig bruker dem: "..\\&..". Du vil kanskje bruke blokkskjemaet for å unngå mange backslashes.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.