Константин Кноп (knop) wrote,
Константин Кноп
knop

Categories:

Алгоритм избавления от лишних пробелов

Очень частая ситуация при любом редактировании текста на компьютере - нужно поудалять в тексте двойные, тройные и более длинные серии пробелов, оставив между каждыми двумя словами ровно один пробел. Моё традиционное решение - глобальная замена по тексту двух пробелов на один.
Думаю, что и все остальные компьютерщики поступают именно так.
Минус такого решения состоит в том, что приходится делать эту замену в несколько проходов (если заранее не считать, какова длина наибольшей цепочки пробелов, то и число проходов узнать заранее нельзя; приходится повторять замены до тех пор, пока число замененных цепочек не станет равно нулю, т.е. неопределенное число раз).

Сегодня пришло в голову решение, лишенное этого недостатка. И даже удивительно, что я не придумал его раньше.

1. Заменим каждый пробел на сочетание двух символов, не встречающееся в тексте. Например, на ^&.
2. Заменим каждое сочетание &^ на пустую строку.
3. Заменим ^& на пробел.

Не правда ли, элегантно?

PS. Спустя три года после опубликования изменил Subj, добавив в него слово "Алгоритм".
До этого пост был 9-м в выдаче Яндекса. Посмотрим, что будет через неделю
Subscribe

  • Данетка про метро

    Немало удивился, когда выяснилось, что сразу несколько моих знакомых, ежедневно пользующихся красной веткой метро, не могут ответить на вопрос,…

  • Данетка

    Я живу недалеко от Лесного проспекта в одном квартале от метро "Выборгская". Вот уже третью неделю я хожу к метро и от него разными путями. От метро…

  • Куда правильно писать мои математические тексты

    Коллегам-математикам Я в натуральном смятении. То бишь в том, что принято нынче называть емким словом "непонятки". Вот смотрите. Если я решил…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 59 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

  • Данетка про метро

    Немало удивился, когда выяснилось, что сразу несколько моих знакомых, ежедневно пользующихся красной веткой метро, не могут ответить на вопрос,…

  • Данетка

    Я живу недалеко от Лесного проспекта в одном квартале от метро "Выборгская". Вот уже третью неделю я хожу к метро и от него разными путями. От метро…

  • Куда правильно писать мои математические тексты

    Коллегам-математикам Я в натуральном смятении. То бишь в том, что принято нынче называть емким словом "непонятки". Вот смотрите. Если я решил…