Methode: String#gsub

Gibt eine Kopie von str zurück, wobei alle Vorkommen von pattern durch das zweite Argument ersetzt werden. Wenn es als String angegeben wird, werden alle darin enthaltenen Metazeichen für reguläre Ausdrücke wörtlich interpretiert, z. B. \d entspricht einem Backslash gefolgt von ‚d‘ anstelle einer Ziffer.

Wenn replacement eine Zeichenfolge ist, wird der übereinstimmende Text ersetzt. Es kann Rückverweise auf die Erfassungsgruppen des Musters der Form \d enthalten, wobei d eine Gruppennummer ist, oder \k<n>, wobei n ein Gruppenname ist. Ähnlich, \&, \', \`, und + entsprechen speziellen Variablen, $&, $', $`, und $+, beziehungsweise. (Siehe regexp .rdoc für Details.) ist das gleiche wie \&. \ wird als Escape interpretiert, d. H. Als einzelner Backslash. Beachten Sie, dass sich innerhalb von replacement die speziellen Übereinstimmungsvariablen wie $& nicht auf die aktuelle Übereinstimmung beziehen.

Wenn das zweite Argument ein Hash ist und der übereinstimmende Text einer seiner Schlüssel ist, ist der entsprechende Wert die Ersetzungszeichenfolge.

In der Blockform wird die aktuelle Übereinstimmungszeichenfolge als Parameter übergeben, und Variablen wie , , $`, $&, und $' wird entsprechend eingestellt. (Siehe regexp .rdoc für Details.) Der vom Block zurückgegebene Wert wird bei jedem Aufruf durch die Übereinstimmung ersetzt.

Wenn weder ein Block noch ein zweites Argument angegeben wird, wird ein Enumerator zurückgegeben.

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

Beachten Sie, dass ein String-Literal Backslashes verbraucht. (Siehe Syntax / Literale.rdoc für Details zu String-Literalen.) Rückverweisen wird typischerweise ein zusätzlicher Backslash vorangestellt. Wenn Sie beispielsweise eine Rückreferenz \& in replacement mit einem Zeichenfolgenliteral in doppelten Anführungszeichen schreiben möchten, müssen Sie schreiben: "..\&..". Wenn Sie eine Nicht-Rückverweiszeichenfolge \& in replacement schreiben möchten, müssen Sie zuerst den umgekehrten Schrägstrich maskieren, um zu verhindern, dass diese Methode sie als Rückverweis interpretiert, und dann müssen Sie die umgekehrten Schrägstriche erneut maskieren, um zu verhindern, dass ein Zeichenfolgenliteral sie verbraucht: "..\\&..". Möglicherweise möchten Sie das Blockformular verwenden, um viele Backslashes zu vermeiden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.