Поиск и замена — это одна из важнейших функций любой программы, которая обрабатывает большие объемы текстовой информации. Все профессиональные текстовые редакторы, настольные издательские системы, мощные графические редакторы имеют средства для поиска и замены строковых образцов.
Программа поиска и замены текста запускается по команде Edit|Find and Replace|Text
(<Ctrl>+<Shift>+<F>). Областью поиска является отмеченный текстовый блок или отмеченная текстовая цепочка. Если таковые отсутствуют, то поиск выполняется во всех текстовых блоках и цепочках публикации.
Разделение текстового массива на слова, строчки и страницы — это форма, удобная для человеческого восприятия. Для программы любой текст представляет собой просто последовательность символов: букв, цифр, пробелов, концов строк и параграфов и др. Программа поиска «перемещает» заданный поисковый образец по текстовой цепочке до полного совпадения образца и текстового фрагмента. Если такое совпадение имеет место, то поиск считается успешным, а соответствующий фрагмент тестового блока отмечается.
На рис. 6-8 показано диалоговое окно Find Text (Найти текст), в котором задаются параметры поисковой сессии.
6-8. Диалоговое окно для поиска и замены текста
В поле Find (Найти) вводится строчка, которая служит образцом поиска. Для вставки в образец специальных символов или шаблонов служит поле
Special (Специальные символы). Символы, которые отсутствуют в этом списке, можно вставить в поисковый образец при помощи буфера обмена.
Переключатели Whole word (Слово целиком) и Match case (Соответствие регистра) ужесточают правила поиска. Если выставить флажок
Whole word, то программа будет искать не подцепочку, а целое слово, которое совпадает с поисковым образцом. Так, если ввести в качестве образца слово «поиск», то программа пропустит все словообразования, построенные на его основе (поисковый, поисковик и т. п.).
Если выбран переключатель Match case, то программа будет считать различными символы, набранные в верхнем и нижнем регистрах.
Переключатель Show selection (Показать выделение) обеспечивает прокрутку экрана так, что найденный фрагмент всегда остается в поле зрения пользователя.
Щелчок по кнопке Find Next (Найти следующий) запускает процедуру поиска и инициирует его продолжение после нахождения совпадающего фрагмента.
В нижней левой части диалогового окна программа отображает найденное вхождение образца и его контекст.
В поле Change to (Заменить на) можно задать подстановку, т. е. строчку, которая заменяет найденный фрагмент текста. Для вставки в подстановку специальных символов используется поле
Special (Специальный символ).
Кнопки Change (Заменить) и Change all (Заменить все) управляют заменой текста. Первая служит для подтверждения замены каждого вхождения поискового образца на строчку, заданную в поле Change to. По щелчку на второй кнопке программа автоматически выполнит все замены в заданном поисковом пространстве.
В таблице представлен полный перечень специальных символов и шаблонов вместе с их кодовыми обозначениями, которые можно использовать для сложного поиска. Пусть, например, требуется найти все строчки текстового массива, которые начинаются с цифры. Для этого надо два раза выполнить поиск с разными критериями. По образцу
^р^# будут найдены все первые строчки параграфов, удовлетворяющие заданному условию, а поиск по образцу
^п^# относится ко всем остальным строчкам.
Название | Обозначение |
Табулятор | ^t |
Конец параграфа | ^p |
Конец колонки | ^d |
Конец строки | ^n |
Неразрывный пробел (non-breaking space) | ^S |
Длинный пробел, круглая шпация (Em space) | ^М |
Полукруглая шпация (En space) | ^N |
Короткий пробел, тонкая шпация (Thin space) | ^T |
Символ мягкого переноса, дискреционный перенос |   |
(Discretionary hyphen) |   ^- |
Знак вставки, галочка (Caret) | ^^ |
Любой одиночный символ | ^@ |
Любая одиночная буква | ^* |
Любая одиночная цифра | ^# |
Белый пробел (любой из трех типов пробелов, или символ |   |
табуляции, или любая последовательность этих символов) | ^w |
Совет
Многие программы имеют такие средства поиска, которые позволяют менять только признаки форматирования найденного фрагмента, оставляя символы без изменений. Рассмотрим, как эта функция выполняется в программе FreeHand. Необходимо проделать следующее: