Skip to content

Archives

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Categories

  • Ingen kategorier
Trend RepositoryArticles and guides
Articles

3 fantastiske måder at bruge Rubys Gsub-metode på

On oktober 4, 2021 by admin

Lad os tale om Rubys gsub-metode.

Først skal du bruge en streng for at lege med denne metode.

Hvorfor?

For du bruger gsub på en streng for at erstatte dele af den.

Faktisk set:

Det “sub” i “gsub” står for “substitute” (erstatning), og “g” står for “global”.

Har du din streng?

Godt.

Hvis ikke, kan du låne min.

Her er den:

str = "white chocolate"

Lad os sige, at vi ønsker at erstatte “white” med “dark”.

Her er hvordan:

str.gsub("white", "dark")

Det vil sige:

Givet strengen str, giv den ordre til at erstatte ALLE forekomster af det første ord (white) med det andet ord (dark).

Det betyder, at vi kommer til at spise meget bedre chokolade.

Oh vent, det er bare en streng.

Det kan vi ikke spise!

Anyway…

Rubys gsub metode kan gøre meget mere end simpel substitution.

Lad os se et par eksempler.

  • Replace Patterns With A Regular Expression
  • Advanced Gsub With Blocks
  • Erstat flere udtryk med en hash
  • Summary

Replace Patterns With A Regular Expression

Replacering af et enkelt ord er fint.

Men hvad nu, hvis du kunne erstatte et mønster?

Som:

Et årstal, en e-mail-adresse, et telefonnummer osv.

Det kan du!

Her er et eksempel:

"a1".gsub(/\d/, "2")# "a2"

Det første argument er et regulært udtryk, og det er for meget at dække her.

Men det er et mønstermatchende sprog.

I dette tilfælde leder \d efter tal, som f.eks. “1” i “a1”.

Du kan også gøre dette:

"a1".gsub(/(\w)(\d)/, '')

Hvilket resulterer i:

"1a"

Vi har byttet om på rækkefølgen!

Dette fungerer ved hjælp af en funktion, der hedder “capture groups”.

Vi kan bruge grupperne som for den første gruppe, for den anden gruppe osv.

Grupper oprettes med parenteser.

Advanced Gsub With Blocks

Det bliver rigtig interessant, når du begynder at bruge gsub med en blok.

Hvorfor?

For inden for en blok kan du bruge logik til at beslutte, hvordan noget skal erstattes.

I stedet for at bruge en statisk værdi.

For eksempel:

"dog".gsub(/\w+/) { |animal| animal == "dog" ? "cat" : "dog" }

Vi finder dyret med \w+, som betyder “et eller flere alfanumeriske tegn”.

Dernæst:

  • Hvis det er en “hund”, erstatter vi det med “kat”
  • Hvis ordet er noget andet, erstatter vi det med “hund”

Denne slags logik er ikke mulig med en statisk værdi, gsub’s 2. parameter.

Erstat flere udtryk med en hash

Hvis du har en liste over substitutioner, der skal foretages, kan du bruge en hash.

Som denne:

colors = { "B" => "blue", "G" => "green", "R" => "red"}

Dette fungerer som en oversættelsesordbog, hvor nøglerne erstattes af deres værdier.

Her er et eksempel:

"BBBGR".gsub(/\w/, colors)

Hvilket resulterer i:

"bluebluebluegreenred"

Sørg for, at dit 1. argument passer til nøglerne.

I dette tilfælde matcher \w individuelle tegn, så den vil matche “B” og derefter erstatte det med “blue”.

Summary

Du har lært om gsub-metoden i Ruby! Det er en kraftfuld metode, der giver dig mulighed for at erstatte eller erstatte tegn i en streng.

Den har flere anvendelsesmuligheder:

  • Fjernelse af ugyldige tegn (ved at gøre det 2. argument til en tom streng)
  • Erstatning af pladsholdere & akronymer med deres fulde værdier
  • Anvendelse af mønstre & logik til at ændre en streng

Nu er det din tur til at øve dig med denne metode, så du kan få din nye viden til at sidde fast.

Tak for læsning 🙂

Skriv et svar Annuller svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Arkiver

  • januar 2022
  • december 2021
  • november 2021
  • oktober 2021
  • september 2021

Meta

  • Log ind
  • Indlægsfeed
  • Kommentarfeed
  • WordPress.org
  • DeutschDeutsch
  • NederlandsNederlands
  • SvenskaSvenska
  • DanskDansk
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • RomânăRomână
  • PolskiPolski
  • ČeštinaČeština
  • MagyarMagyar
  • SuomiSuomi
  • 日本語日本語

Copyright Trend Repository 2022 | Theme by ThemeinProgress | Proudly powered by WordPress