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.