0Pricing
Swift Academy · Урок

Замена и разделение текста

Преобразуйте строки с помощью операций регулярных выражений.

«Замена и разделение текста» — бесплатный урок Swift Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Замена и разделение

Регулярные выражения нужны не только для сопоставления. Строки Swift могут заменять совпавший текст и разделяться по шаблону, что позволяет изменять строки без ручных циклов.

replacing(_:with:)

replacing(_:with:) возвращает новую строку, в которой каждое совпадение шаблона заменено указанным текстом.

let s = "a1b2c3"
let cleaned = s.replacing(/\d/, with: "*")
print(cleaned)

Замена целых слов

Шаблоном может быть любое регулярное выражение, поэтому все последовательности цифр можно заменить сразу одной операцией.

let s = "order 1234 done"
let masked = s.replacing(/\d+/, with: "#")
print(masked)

Изменение с помощью replace

replace(_:with:) изменяет строку var на месте, а не возвращает копию.

var text = "hello world"
text.replace(/o/, with: "0")
print(text)

Замена с помощью замыкания

Форма replacing(_:with:) с замыканием получает каждое совпадение и возвращает замену, что позволяет вычислять подстановки.

let s = "a1 b2 c3"
let result = s.replacing(/\d+/) { match in
    String((Int(match.0) ?? 0) * 10)
}
print(result)

Использование захватов при замене

Внутри замыкания можно прочитать группы захвата из совпадения и на их основе создать текст замены.

let s = "2024-05"
let out = s.replacing(/(\d+)-(\d+)/) { m in
    "\(m.2)/\(m.1)"
}
print(out)

split(separator:)

Строки поддерживают split(separator:) с регулярным выражением, разделяя строку в каждом месте, где совпадает шаблон.

let csv = "a,b;c,d"
let parts = csv.split(separator: /[,;]/)
print(parts)

Разделение по пробельным символам

Распространённая задача: разделить строку на слова по любой последовательности пробельных символов с помощью /\s+/.

let line = "the   quick  brown"
let words = line.split(separator: /\s+/)
print(words.count)
print(words)

Ограничение количества разделений

Параметр maxSplits ограничивает количество разделений, сохраняя остаток строки целиком.

let s = "a-b-c-d"
let parts = s.split(separator: /-/, maxSplits: 1)
print(parts)

Обрезка и замена

Объединяйте операции: сначала заменяйте ненужные шаблоны, затем разделяйте строку, чтобы очистить и разбить входные данные на элементы в рамках одного конвейера.

let raw = "  one,, two ,,three "
let cleaned = raw.replacing(/,+/, with: ",")
let items = cleaned.split(separator: ",").map { $0.trimmingCharacters(in: .whitespaces) }
print(items)

replacing и replacingOccurrences

Регулярное выражение replacing работает с шаблонами, а более старый метод replacingOccurrences(of:with:) обрабатывает только буквальные подстроки. Для изменений на основе шаблонов предпочтительнее форма с регулярным выражением.

let s = "cat hat bat"
print(s.replacing(/[ch]at/, with: "X"))

Быстрая проверка

Что выдаёт "a1b2".replacing(/\d/, with: "-")?

Итоги

Вы можете заменять совпадения с помощью replacing(_:with:) (в форме со строкой или замыканием) и изменять строку на месте с помощью replace, а также разделять строки по регулярному выражению с помощью split(separator:) и maxSplits. Эти возможности превращают регулярные выражения в полноценный набор инструментов для преобразования текста.

Часто задаваемые вопросы

Урок «Замена и разделение текста» бесплатный?

Да — полный текст урока «Замена и разделение текста» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Замена и разделение текста»?

Преобразуйте строки с помощью операций регулярных выражений. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Замена и разделение текста»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Литералы Regex и сопоставление
  2. Захватывающие группы
  3. RegexBuilder DSL
  4. Замена и разделение текста
← Назад к Swift Academy