Замена подстрок
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 5 из 56.
replacingOccurrences(of:with:) возвращает новую строку, в которой каждое совпадение одной подстроки заменено на другую:
let phone = "555-123-4567"
let digits = phone.replacingOccurrences(of: "-", with: "")
print(digits) // "5551234567"Как и методы изменения регистра, он возвращает новую String; оригинал остается неизменным. Используйте цепочку вызовов, когда вам нужно удалить несколько шаблонов:
let messy = " 555-123 4567 "
let clean = messy
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")
print(clean) // "5551234567"Две замены означают два прохода по строке. Для критичного к производительности кода на огромных строках предпочтите один проход filter по символам; для повседневных задач цепочки замен вполне подходят и читаются понятно.
Задание
НовичокПрочитайте одну строку входных данных. Рассматривайте её как предложение и создайте slug, подходящий для URL, выполнив следующие действия:
- Приведение входных данных к нижнему регистру
- Замена каждого пробела на
- - Удаление всех символов
!,?и.
Выведите полученный slug.
Для входных данных Hello World! результатом будет hello-world. Для Is Swift Fun? результатом будет is-swift-fun.
Шпаргалка
replacingOccurrences(of:with:) возвращает новую строку, в которой все совпадения заменены:
let digits = "555-123-4567".replacingOccurrences(of: "-", with: "")
// "5551234567"Используйте цепочку вызовов для обработки нескольких шаблонов:
let clean = "555-123 4567"
.replacingOccurrences(of: "-", with: "")
.replacingOccurrences(of: " ", with: "")Попробуйте сами
let line = readLine()!
// TODO: привести к нижнему регистру, заменить пробелы на дефисы, удалить символы ! ? .
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря