metode: String#gsub

returnerer en kopi af str med alle forekomster af mønster erstattet af det andet argument. Mønsteret er typisk en Regeksp; hvis det gives som en streng, vil ethvert regulært udtryk metategn, det indeholder, blive fortolket bogstaveligt, f.eks. \d matcher en omvendt skråstreg efterfulgt af ‘d’ i stedet for et ciffer.

hvis replacement er en streng, vil den blive erstattet af den matchede tekst. Det kan indeholde tilbagehenvisninger til mønsterets fangstgrupper af formularen \d, hvor d er et gruppenummer, eller \k<n>, hvor n er et gruppenavn. Tilsvarende, \&, \', \`, og + svarer til særlige variabler, $&, $', $`, og $+. (Jf.regelsæt.rdoc for detaljer.) er det samme som \&. \ fortolkes som en flugt, dvs.en enkelt tilbageslag. Bemærk, at inden for replacement henviser de specielle matchvariabler, såsom $&, ikke til den aktuelle kamp.

hvis det andet argument er en Hash, og den matchede tekst er en af dens nøgler, er den tilsvarende værdi udskiftningsstrengen.

i blokformularen sendes den aktuelle matchstreng ind som en parameter, og variabler såsom , , $`, $&, og $' vil blive indstillet korrekt. (Jf.regelsæt.rdoc for detaljer.) Den værdi, der returneres af blokken, erstattes af kampen ved hvert opkald.

når hverken en blok eller et andet argument leveres, returneres en tæller.

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

Bemærk, at en streng bogstavelig bruger tilbageslag. (Se syntaks / bogstaver.rdoc for detaljer om strenglitteraler.) Back-referencer er typisk forud for en ekstra backslash. For eksempel, hvis du vil skrive en back-reference \& i replacement med en dobbelt-Citeret streng bogstavelig, skal du skrive: "..\&..". Hvis du vil skrive en ikke-back-reference streng \& i replacement, skal du først undslippe backslash for at forhindre denne metode i at fortolke den som en back-reference, og så skal du undslippe backslashes igen for at forhindre en streng bogstavelig fra at forbruge dem: "..\\&..". Det kan være en god ide at bruge blokformularen til at undgå mange tilbageslag.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.