Menu
Coddy logo textTech

Замена подстрок

Часть раздела Логика и управление потоком путешествия по 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 по символам; для повседневных задач цепочки замен вполне подходят и читаются понятно.

challenge icon

Задание

Новичок

Прочитайте одну строку входных данных. Рассматривайте её как предложение и создайте slug, подходящий для URL, выполнив следующие действия:

  1. Приведение входных данных к нижнему регистру
  2. Замена каждого пробела на -
  3. Удаление всех символов !, ? и .

Выведите полученный 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: привести к нижнему регистру, заменить пробелы на дефисы, удалить символы ! ? .
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком