Zastępowanie podciągów
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 5 z 56.
replacingOccurrences(of:with:) zwraca nowy ciąg znaków, w którym każde wystąpienie jednego podciągu zostało zastąpione innym:
let phone = "555-123-4567"
let digits = phone.replacingOccurrences(of: "-", with: "")
print(digits) // "5551234567"Podobnie jak metody zmiany wielkości liter, zwraca nowy obiekt String; oryginał pozostaje niezmieniony. Łącz wywołania, gdy chcesz usunąć kilka wzorców:
let messy = " 555-123 4567 "
let clean = messy
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")
print(clean) // "5551234567"Dwie zamiany oznaczają dwa przebiegi po ciągu znaków. W kodzie, w którym wydajność ma znaczenie i który przetwarza ogromne ciągi znaków, lepiej wykonać pojedynczy przebieg filter po znakach; w codziennej pracy można łączyć zamiany — to czytelne rozwiązanie.
Wyzwanie
PoczątkującyWczytaj pojedynczy wiersz danych wejściowych. Potraktuj go jako zdanie i utwórz slug odpowiedni do adresu URL, wykonując następujące czynności:
- Zamień wszystkie litery w danych wejściowych na małe
- Zastąp każdą spację znakiem
- - Usuń każdy znak
!,?i.
Wypisz uzyskany slug.
Dla danych wejściowych Hello World! wynikiem jest hello-world. Dla Is Swift Fun? wynikiem jest is-swift-fun.
Spróbuj swoich sił
let line = readLine()!
// TODO: zamień litery na małe, spacje na łączniki i usuń znaki ! ? .
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słówPoćwicz samodzielnie: Edytor online Swift