Убрать дублирование знаков пунктуации Swift
Требуется написать программу в Swift, которая будет принимать текст с лишними знаками препинания, с заглавными буквами не там, где нужно, с нескольким пробелами подряд и т.д.
Как сделать, чтобы вместо нескольких знаков препинания, которые дублируются, остались только те, которые нужны?
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Вот базовый пример, показывающий удаление повторяющихся символов с помощью регулярного выражения
import UIKit
func sanitizeString(_ string: String) -> String {
/*
используем регулярное выражение, состоящее из двух групп:
в первой символ, для которого нужно удалить повторения,
во второй его повторы, здесь ищем точки, запятые и пробелы
*/
let pattern = "([\\.,\\s])(\\1{1,})"
// используем NSString, чтобы избежать преобразований NSRange > Range
var buffer = string as NSString
guard let regex = try? NSRegularExpression(pattern: pattern, options: []) else {
return string
}
while let match = regex.firstMatch(in: buffer as String, options: [], range: NSRange(location: 0, length: buffer.length)) {
// диапазон с повторами
let range = match.range(at: 2)
buffer = buffer.replacingCharacters(in: range, with: "") as NSString
}
return buffer as String
}
let testStr = "..... Тест,,, Тест2 ,,,,,"
let r = sanitizeString(testStr)
print(r) // вывод ". Тест, Тест2 ,"