Замена и разделение текста
Преобразуйте строки с помощью операций регулярных выражений.
«Замена и разделение текста» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Литералы Regex и сопоставление
- Захватывающие группы
- RegexBuilder DSL
- Замена и разделение текста