Skip to content

Archives

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Categories

  • Brak kategorii
Trend RepositoryArticles and guides
Articles

3 niesamowite sposoby użycia metody Gsub w Rubim

On 4 października, 2021 by admin

Porozmawiajmy o metodzie gsub w Rubim.

Po pierwsze, będziesz potrzebował łańcucha znaków, aby bawić się tą metodą.

Dlaczego?

Ponieważ używasz gsub na łańcuchu do zastąpienia jego części.

W rzeczywistości:

„sub” w „gsub” oznacza „substytut”, a „g” oznacza „globalny”.

Masz swój ciąg znaków?

Dobrze.

Jeśli nie, możesz pożyczyć mój.

Oto on:

str = "white chocolate"

Powiedzmy, że chcemy zastąpić słowo „biały” słowem „ciemny”.

Oto jak:

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

To mówi:

Dając łańcuch str, rozkaż mu zastąpić WSZYSTKIE wystąpienia pierwszego słowa (white) drugim słowem (dark).

Co oznacza, że będziemy mogli jeść dużo lepszą czekoladę.

Czekaj, to tylko łańcuch.

Nie możemy tego jeść!

W każdym razie…

Metoda Ruby’ego gsub może zrobić dużo więcej niż proste podstawianie.

Zobaczmy kilka przykładów.

  • Replace Patterns With A Regular Expression
  • Zaawansowany Gsub Z Blokami
  • Replace Multiple Terms With A Hash
  • Podsumowanie

Replace Patterns With A Regular Expression

Zastępowanie pojedynczego słowa jest w porządku.

Ale co by było, gdybyś mógł zastąpić wzorzec?

Na przykład:

Rok, adres e-mail, numer telefonu, itp.

Możesz!

Oto przykład:

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

Pierwszym argumentem jest wyrażenie regularne, a to zbyt wiele, aby omówić je tutaj.

Ale jest to język dopasowujący wzorce.

W tym przypadku \d szuka liczb, takich jak „1” w „a1”.

Możesz też zrobić tak:

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

Wynika z tego:

"1a"

Zamieniliśmy kolejność!

To działa dzięki użyciu funkcji zwanej „grupy przechwytywania”.

Możemy używać grup jako dla pierwszej grupy, dla drugiej grupy, itd.

Grupy są tworzone za pomocą nawiasów.

Zaawansowany Gsub Z Blokami

Rzeczy stają się naprawdę interesujące, gdy zaczynasz używać gsub z blokiem.

Dlaczego?

Ponieważ wewnątrz bloku możesz użyć logiki, aby zdecydować, jak coś zastąpić.

Zamiast używać wartości statycznej.

Na przykład:

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

Znajdujemy zwierzę z \w+, co oznacza „jeden lub więcej znaków alfanumerycznych”.

Wtedy:

  • Jeśli jest to „pies”, zastępujemy go „kotem”
  • Jeśli słowo jest czymkolwiek innym, zastępujemy je „psem”

Tego rodzaju logika nie jest możliwa z wartością statyczną, 2. parametrem gsub.

Replace Multiple Terms With A Hash

Jeśli masz listę zamienników do wykonania, możesz użyć hasha.

Like this one:

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

This works like a translation dictionary, where the keys will be replaced by their values.

Here’s an example:

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

Which results in:

"bluebluebluegreenred"

Make sure that your 1st argument will match the keys.

W tym przypadku \w dopasowuje pojedyncze znaki, więc dopasuje „B” i zamieni je na „blue”.

Podsumowanie

Poznałeś metodę gsub w Rubim! Jest to potężna metoda, która pozwala na zamianę lub zastąpienie znaków wewnątrz łańcucha znaków.

Ma ona wiele zastosowań:

  • Usuwanie nieprawidłowych znaków (poprzez uczynienie drugiego argumentu pustym łańcuchem znaków)
  • Zastępowanie zastępników & akronimów ich pełnymi wartościami
  • Używanie wzorców & logiki do zmiany łańcucha znaków

Teraz twoja kolej na praktykę z tą metodą, abyś mógł sprawić, że twoja nowa wiedza będzie się trzymać.

Dzięki za przeczytanie 🙂

.

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Archiwa

  • styczeń 2022
  • grudzień 2021
  • listopad 2021
  • październik 2021
  • wrzesień 2021

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • 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