вторник, 28 ноября 2017 г.

Найти и заменить. Приводим в порядок текст, вставленный в документ из других программ

Очень часто мы создаем документы методом копипасты кусков текста из разных источников и последующего приведения этих кусков текста к единому виду и более или менее наличию смысла в тексте в общем.
С чем чаще всего мы сталкиваемся в этих кусках скопированного текста?
Более одного пробела идущего подряд, знаки разрыва строки вместо знака абзаца, абзацы разделены друг от друга пустыми абзацами, некие спецсимволы в большом количестве.
Перво наперво нужно включить отображение непечатаемых символов. Делается это путем нажатия на соответствующий значок на панели инструментов или нажать сочетание клавиш Ctrl + F10, или выбрать пункт меню Вид > Непечатаемые символы.
Для устранения этих "проблем" в тексте нужно использовать диалог "Найти и заменить", вызываемый по нажатию сочетания клавиш Ctrl+H или из меню "Правка".
Замена множества знаков пробелов идущих подряд на один такой же знак:
1. В диалоге "Найти и заменить" в строку "Найти" вбиваем \s+
2. В строку "Заменить" вбиваем один пробел (он не будет обозначен каким-то специальным символом, его не будет видно, но по положению курсора в строке понятно, что пробел таки есть)
3. Далее раскрываем "Другие параметры" и отмечаем галочкой опцию "Регулярные выражения"
4. Нажимаем на кнопку "Заменить все". На этом всё.
Замена знака разрыва строки на знак абзаца (если этого не сделать, то, не смотря на перенос строки, Либра будет считать текст одним абзацем и применять стили соответственно, что может весьма удивить пользователя):
1. В диалоге "Найти и заменить" в строку "Найти" вбиваем \n
2. В строку "Заменить" также вбиваем \n
3. "Регулярные выражения" также должны быть активированы
4. Нажимаем на кнопку "Заменить все". На этом всё.
Замена нескольких подряд идущих знаков абзаца на один знак абзаца:
1. В диалоге "Найти и заменить" в строку "Найти" вбиваем ^$ (знак доллара!)
2. В строку "Заменить" ничего не вбиваем!
3. "Регулярные выражения" также должны быть активированы
4. Нажимаем на кнопку "Заменить все". На этом всё.

Вся эта информация есть на просторах интернета, этот пост я сделал больше для себя. 

7 комментариев:

  1. Небольшое уточнение:

    Замена \s+ на пробел заменяет все пробельные символы, к которым относится, в т.ч., знак табуляции. Следует это учитывать. Если требуется заменить строго пробелы, то вместо \s перед плюсом нужно поставить опять же пробел (его не видно, но он есть ;-) )

    ОтветитьУдалить
  2. Первое, что бы я посоветовал — это включить режим отображения непечатаемых знаков «Переключить непечатаемые символы» (Ctrl+F10)

    ОтветитьУдалить
  3. "Замена знака разрыва строки на знак абзаца".
    Неплохо.
    А теперь расскажите про: ЗАМЕНА АБЗАЦА НА ЗНАК РАЗРЫВА СТРОКИ.

    ОтветитьУдалить
    Ответы
    1. https://extensions.libreoffice.org/extensions/alternative-dialog-find-replace-for-writer

      Удалить
    2. Никогда с таким не сталкивался, какая цель такой замены?

      Удалить
    3. Для уточнения: "заменить знак абзаца" можно; проблема в "НА ЗНАК РАЗРЫВА СТРОКИ". И это действительно неудобное ограничение (https://bugs.documentfoundation.org/show_bug.cgi?id=106137). Объединение абзацев в один с разрывами строк может редко быть удачной идеей (но почему нет - особенно "в выделении"), но может быть нужным замена на разрывы не только абзацев, но и чего-то другого...

      Удалить
  4. Вот, кстати, только что столкнулся с ситуацией, когда такое могло быть полезно. В стихотворениях внутри строфы используются разрывы строк, не отдельные абзацы; я скопировал стихотворение и хотел заменить в выделенной строфе абзацы на разрывы.

    ОтветитьУдалить

Внимание! Сообщения проходят премодерацию!