Удаление символов, соответствующих шаблону

Swift:
Удаление символов, соответствующих шаблону

Как это сделать:

import Foundation

// Пример: Удаление всех цифр из строки
let originalString = "Свяжитесь со мной по номеру 123-456-7890 после 09:00 PM."
let digitsPattern = "[0-9]"
let resultString = originalString.replacingOccurrences(of: digitsPattern, with: "", options: .regularExpression)

print(resultString)  // Вывод: "Свяжитесь со мной по номеру -- после : PM."
// Пример: Удаление не-алфавитно-цифровых символов
let messyString = "H3!llo, W%@rld-"
let nonAlphanumericPattern = "[^A-Za-z0-9]"
let cleanString = messyString.replacingOccurrences(of: nonAlphanumericPattern, with: "", options: .regularExpression)

print(cleanString)  // Вывод: "H3lloWrld"

Погружение

До Swift и современного программирования, сопоставление шаблонов было сферой особых средств и языков, таких как sed, awk или Perl, известных своими возможностями обработки текста. Swift, благодаря своему мощному фреймворку Foundation, упрощает эти задачи в рамках языка, делая их более доступными для разработчиков.

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

Под капотом, когда вы запускаете replacingOccurrences(of:with:options:) с опцией .regularExpression, Swift использует движок регулярных выражений ICU (International Components for Unicode) для обработки шаблона. ICU - это зрелая, широко используемая библиотека для поддержки Unicode, включая сопоставление шаблонов, которая встроена во многие высокоуровневые языки программирования.

Смотрите также