3 Awesome Ways To Use Ruby’s Gsub Method
On Oktober 4, 2021 by adminLassen Sie uns über die Methode gsub
von Ruby sprechen.
Zunächst brauchen Sie einen String, um mit dieser Methode zu spielen.
Warum?
Weil man gsub
auf eine Zeichenkette anwendet, um Teile davon zu ersetzen.
In der Tat:
Das „sub“ in „gsub“ steht für „substitute“, und das „g“ steht für „global“.
Hast du deine Zeichenkette?
Gut.
Wenn nicht, kannst du dir meine ausleihen.
Hier ist sie:
str = "white chocolate"
Sagen wir, wir wollen „weiß“ durch „dunkel“ ersetzen.
So geht’s:
str.gsub("white", "dark")
Das heißt:
Befehlen Sie der Zeichenfolge str
, ALLE Vorkommen des ersten Wortes (white
) durch das zweite Wort (dark
) zu ersetzen.
Das bedeutet, dass wir viel bessere Schokolade essen können.
Ach warte, es ist nur eine Zeichenkette.
Das können wir nicht essen!
Allerdings…
Rubys gsub
Methode kann viel mehr als einfache Ersetzung.
Lassen Sie uns ein paar Beispiele sehen.
Ersetzen von Mustern mit einem regulären Ausdruck
Ein einzelnes Wort zu ersetzen ist in Ordnung.
Aber was wäre, wenn Sie ein Muster ersetzen könnten?
Zum Beispiel:
Eine Jahreszahl, eine E-Mail-Adresse, eine Telefonnummer usw.
Das können Sie!
Hier ist ein Beispiel:
"a1".gsub(/\d/, "2")# "a2"
Das erste Argument ist ein regulärer Ausdruck, und es ist zu viel, um es hier zu behandeln.
Aber es ist eine Sprache, die nach Mustern sucht.
In diesem Fall sucht \d
nach Zahlen, wie die „1“ in „a1“.
Sie können auch so vorgehen:
"a1".gsub(/(\w)(\d)/, '')
Das Ergebnis ist:
"1a"
Wir haben die Reihenfolge vertauscht!
Das funktioniert mit Hilfe einer Funktion namens „Erfassungsgruppen“.
Wir können die Gruppen als für die erste Gruppe,
für die zweite Gruppe usw. verwenden.
Gruppen werden mit Klammern erstellt.
Erweitertes Gsub mit Blöcken
Richtig interessant wird es, wenn man gsub mit einem Block verwendet.
Warum?
Weil man innerhalb eines Blocks mit Logik entscheiden kann, wie man etwas ersetzt.
Anstatt einen statischen Wert zu verwenden.
Zum Beispiel:
"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }
Wir finden das Tier mit \w+
, was „ein oder mehrere alphanumerische Zeichen“ bedeutet.
Dann:
- Wenn es ein „Hund“ ist, ersetzen wir es durch „Katze“
- Wenn das Wort etwas anderes ist, ersetzen wir es durch „Hund“
Diese Art von Logik ist nicht möglich mit einem statischen Wert, dem zweiten Parameter von gsub.
Mehrere Begriffe durch einen Hash ersetzen
Wenn Sie eine Liste von Ersetzungen haben, können Sie einen Hash verwenden.
Wie dieser hier:
colors = { "B" => "blue", "G" => "green", "R" => "red"}
Dies funktioniert wie ein Übersetzungswörterbuch, bei dem die Schlüssel durch ihre Werte ersetzt werden.
Hier ist ein Beispiel:
"BBBGR".gsub(/\w/, colors)
Das Ergebnis ist:
"bluebluebluegreenred"
Stellen Sie sicher, dass Ihr erstes Argument mit den Schlüsseln übereinstimmt.
In diesem Fall stimmt \w
mit einzelnen Zeichen überein, so dass „B“ durch „blau“ ersetzt wird.
Zusammenfassung
Sie haben die Methode gsub in Ruby kennengelernt! Es ist eine mächtige Methode, mit der man Zeichen innerhalb einer Zeichenkette ersetzen kann.
Sie hat mehrere Verwendungsmöglichkeiten:
- Entfernen ungültiger Zeichen (indem man das 2. Argument zu einer leeren Zeichenkette macht)
- Ersetzen von Platzhaltern &Akronymen durch ihre vollen Werte
- Verwenden von Mustern &Logik zum Ändern einer Zeichenkette
Jetzt bist du an der Reihe, mit dieser Methode zu üben, damit du dein neues Wissen anwenden kannst.
Danke fürs Lesen 🙂
Schreibe einen Kommentar