Podstawianie
gsub ze wzorcami
Podstawianie to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Zastępowanie tekstu za pomocą sub
String#sub zastępuje pierwsze dopasowanie wzorca ciągiem zastępującym. Oryginalny ciąg znaków nie zostaje zmieniony — metoda zwraca nowy ciąg.
s = 'hello world'
puts(s.sub(/world/, 'Ruby'))
puts sZastępowanie wszystkich dopasowań za pomocą gsub
gsub oznacza globalne zastępowanie. Zastępuje każde dopasowanie, a nie tylko pierwsze.
puts('a-b-c-d'.gsub(/-/, '_'))
puts('one two two'.gsub(/two/, 'three'))Wzorce w zastępowaniu
Pierwszym argumentem gsub może być pełne wyrażenie regularne, co pozwala dopasowywać elastyczne wzorce zamiast stałego tekstu.
puts('id42 id7 id100'.gsub(/\d+/, '#'))
puts('a1b2c3'.gsub(/[0-9]/, '*'))Odwołania wsteczne w zamianie
W ciągu zastępującym można odwoływać się do przechwyconych grup za pomocą \1, \2 i kolejnych oznaczeń.
puts('2026-05-30'.gsub(/(\d{4})-(\d{2})-(\d{2})/, '\3/\2/\1'))Odwołanie wsteczne do całego dopasowania
\0 lub \& odnosi się do całego dopasowanego tekstu, co jest przydatne do otaczania dopasowań.
puts('cat dog'.gsub(/\w+/, '[\0]'))Blokowa postać gsub
gsub przyjmuje blok. Każde dopasowanie jest przekazywane do bloku, a wartość zwrócona przez blok staje się zamianą. Dzięki temu można obliczać zamiany dynamicznie.
result = 'a1 b2 c3'.gsub(/\d/) { |d| (d.to_i * 10).to_s }
puts resultZmiana dopasowań na wielkie litery
Postać blokowa ułatwia przekształcanie tekstu. W tym przykładzie zmieniamy pierwszą literę każdego słowa na wielką.
title = 'the great escape'.gsub(/\w+/) { |w| w.capitalize }
puts titleZastępowanie za pomocą Hash
Jeśli jako drugi argument zostanie przekazany Hash, każde dopasowanie jest wyszukiwane jako klucz, a następnie zastępowane odpowiadającą mu wartością. To świetne rozwiązanie dla map tłumaczeń.
map = { 'cat' => 'kedi', 'dog' => 'kopek' }
puts('cat and dog'.gsub(/cat|dog/, map))Wersje modyfikujące w miejscu
sub! i gsub! modyfikują ciąg znaków w miejscu i zwracają nil, jeśli nie wprowadzono żadnych zmian.
s = 'hello'
s.gsub!(/l/, 'L')
puts s
puts(s.gsub!(/z/, 'x').inspect)Usuwanie tekstu
Aby usunąć dopasowania, należy zastąpić je pustym ciągiem znaków.
puts('h e l l o'.gsub(/\s/, ''))
puts('price: $42'.gsub(/[^0-9]/, ''))Nazwane odwołania wsteczne grup
Grupom można nadawać nazwy za pomocą (?<name>...), a następnie odwoływać się do nich w zamianie za pomocą \k<name>.
out = 'John Smith'.gsub(/(?<first>\w+) (?<last>\w+)/, '\k<last>, \k<first>')
puts outSzybkie sprawdzenie
Jaka jest różnica między sub a gsub?
Podsumowanie: zastępowanie
Poznałeś sposoby przekształcania ciągów znaków za pomocą wzorców:
subzastępuje pierwsze dopasowanie, agsubwszystkie dopasowania- Odwołania wsteczne
\1i\&w zamianach - Postać blokowa umożliwia dynamiczne obliczanie zamian
- Argument Hash mapuje dopasowania na wartości
sub!igsub!modyfikują ciąg znaków w miejscu
puts('foo bar baz'.gsub(/b\w+/) { |w| w.upcase })Często zadawane pytania
Czy lekcja „Podstawianie” jest bezpłatna?
Tak — pełny tekst „Podstawianie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawianie”?
gsub ze wzorcami Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Podstawianie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.