Как удалить новые строки в середине строки с помощью регулярных выражений - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь выяснить, как заменить несколько перерывов (\n) максимальными перерывами в два. Я использовал trimmingCharacters (in:) , чтобы удалить все пробелы и новые строки вокруг строки, но я не могу понять, как удалить пространство в строке, или, скорее, сказал: как я могу заменить более 2 перерывов, максимум 2 перерыва?

Для экземпляра:

Если пользователь пишет в textView с пробелами между словами, строка будет выглядеть следующим образом:

"Hello






I like coffee"

Строковый результат, которого я хотел бы достичь:

"Hello

I like coffee"

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Вы можете выполнить замену регулярного выражения непосредственно на String:

extension String {
    func trimString() -> String {
        return replacingOccurrences(of: "\\n{3,}", with: "\n\n", options: .regularExpression)
    }
}

Шаблон \n{3,} соответствует трем или более символам новой строки.

0 голосов
/ 04 мая 2018

Я решил это с помощью регулярного выражения: \n{2,500} и заменил все на "\n\n".

Работает отлично!

extension String {
    func trimString() -> String {
        let pattern = "\n{2,500}"
        let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
        let range = NSMakeRange(0, self.count)
        let trimmedString = regex.stringByReplacingMatches(in: self, options: .reportProgress, range: range, withTemplate: "\n\n")
        return trimmedString
    }
}
...