Поиск текстового фрагмента

 

Поиск – переход к заданному фрагменту в сложных, значительных по объему исходных модулях.

Способы поиска:

¨ команда Search\Find...(Поиск\Найти) активизацией пункта Search главного меню, а затем пункта Find подменю;

¨ горячие клавиши Shift + Ctrl + F;

¨ кнопка .

Выполнение команды приводит к появлению диалогового окна:

 

Окно позволяет сформировать искомый фрагмент текста и задать параметры поиска.

Искомый фрагмент формируется в основном подокне «Text to find» (Текст для поиска):

¨ непосредственным вводом с клавиатуры

¨ вставкой содержимого буфера обмена (Shift + Insert);

¨ автоматически, если предварительно в тексте был выделен фрагмент.

Внимание! Максимальная длина искомого фрагмента – одна строка. При наличии в буфере обмена (выделении) группы строк в подокно заносится первая из них.

Четыре группы подокон (Option, Direction,Scope,Origin) определяют параметры, направление, область и особенности поиска.

Группа Option (параметры) обеспечивает особенности представления искомого фрагмента активизацией (деактивизацией) каждого из предлагаемых невзаимосвязанных подокон.

Группы Direction,Scope,Origin (направление, область, особенности поиска) обеспечивают альтернативный выбор одного из двух взаимоисключающих вариантов. Следовательно активизация одного из подокон группы автоматически деактивизирует второе и наоборот.

Параметры каждой группы приведены ниже.

 

Наименование группы Подокно Функции
Option (параметры) Case sensitive (учет регистра) Учитывает (не учитывает) регистр
Whole words only (пословный поиск) Поиск пословный (посимвольный)
Direction (направление) Forward (вперед) Поиск в прямом направлении (вниз от курсора)
Backward (назад) Поиск в обратном направлении (вверх от курсора)
Scope (область) Global (везде) Поиск во всем тексте активного окна с учетом особенностей поиска
Selected Text (в выделенном тексте) Поиск в выделенном фрагменте
Origin (особенности) From cursor (от курсора) Поиск от текущей позиции курсора
Entire scope (внутри области) Поиск текстового фрагмента во всем окне

 

Выполнение рассмотренных действий приводит к нахождению единственного (одного, если их несколько) из искомых фрагментов. Найденный фрагмент инвертируется, а окно поиска «Find text» ликвидируется.

Быстрый повторный поиск указанного фрагмента осуществляется

¨ командой Search\Search Again...(Поиск\Повторный поиск);

¨ горячей клавишей F3;

¨ кнопкой .

Выполнение команды приводит к нахождению следующего заданного фрагмента без отображения окна «Find text».

Если поиск безрезультатен (аналог не найден), на экран выдается окно с сообщением Search string ‘Char’ not found (Искомая строка ‘Char’ не найдена). Окно ликвидируется нажатием кнопки «ОК».

 

 

Пример: Найти в заданном исходном модуле количество упоминаний символов Char в любом написании.

Последовательность выполнения поиска фрагмента: Корректируемый исходный модуль находится в активном окне (этап редактирования). Условие примера (во всем исходном модуле) определяет желательность фиксации курсора вначале первой (конце последней) строки текста. Задаем команду поиска (например, горячими клавишами Shift + Ctrl + F).

 

 

В появившемся диалоговом окне формируем искомую строку – Char и параметры поиска:

- Case sensitive неактивизирован (без учета регистра);

- Whole words only неактивизирован (искомая строка – последовательность символов);

- Forward (Backward) активизирован (направление – вниз(вверх) от курсора);

- Global активизирован (во всем тексте);

- From cursorактивизирован (начало поиска – от курсора).

Завершаем команду поиска активизацией кнопки «ОК».

Для варианта расположения курсора вначале исходного модуля результат поиска – перемещение курсора к первому из найденных аналогов и его инвертирование.

 

 

Повторный поиск выполним горячей клавишей F3. Результат – нахождение следующего заданного фрагмента без отображения окна «Find text».

 

 

Дальнейшее выполнение команды повторного поиска (F3) приводит к нахождению (инвертированию) последовательности символов Char в строке

CharToOem(str2,buf2),

а на следующем цикле (F3) – в строке

CharToOem(str3,buf2).

Дальнейшее выполнение команды поиска (F3) приводит к появлению окна с сообщением Search string ‘Char’ not found (Искомая строка ‘Char’ не найдена). Активизация кнопки «ОК» возвращает пользователя к работе с исходным модулем.

Внимание! Предварительная активизация параметра Whole words only (искомая строка является словом) при сохранении остальных параметров без изменения приводит к единственному нахождению слова char в строке

charbuf1[256], buf2[256].

Попытка дальнейшего поиска приводит к появлению окна с сообщением Search string ‘Char’ not found, завершая поиск.

Замена – модификация одного текстового фрагмента другим.

Команда предписывает поиск заменяемого фрагмента и последующую замену его на желаемый (новый).

Замена выполняется:

¨ командой Search\Replace... (Поиск\Заменить);

¨ горячими клавишами Ctrl + Q Ctrl + А;

¨ кнопкой .

Выполнение команды приводит к появлению диалогового окна:

Оно аналогично окну поиска «Find Text» с учетом отличий:

- подокно ввода нового текста New Text;

- переключатель Promрt on replace (вызвать диалог замены) в группе Options

- кнопка Change All(заменить все).

Подокно «New Text» позволяет ввести заменяющий фрагмент (методика аналогична формированию заменяемой строки «Text to Find»)

Переключатель Promрt on replace позволяет выполнить замену в двух режимах: по умолчанию (автоматически) или с подтверждением (в диалоге).

Активизированный переключатель при нахождении заменяемой строки выдает окно выполнения замены в диалоге «Replace this occurrence of ‘Char’?» (Заменить текущий найденный фрагмент ‘Char’?).

 

 

Если переключатель не активизирован, замена найденного фрагмента выполняется автоматически без появления окна-диалога.

Кнопка «Yes» подтверждает однократную замену.

Кнопка Change All(заменить все) предписывает замену всех найденных аналогов без повторного появления окна-диалога.

 

 

Следовательно работа с окном «Replace Text» аналогична работе с «Find Text» при дополнительных установках:

¨ ввода в подокно Text to find искомого текста (подлежащего замене),

¨ формирования в подокне New Text заменяющего (нового) фрагмента,

¨ активизации (деактивизации) переключателя Promрt on replace.

Пример2: Заменить в активном исходном модуле все последовательности символов Char на int.

Последовательность выполнения замены фрагментов:

¨ Корректируемый исходный модуль находится в активном окне (этап редактирования).

¨ Условие примера (во всем исходном модуле) определяет желательность фиксации курсора вначале первой (конце последней) строки текста.

¨ Задаем команду замены (например, горячими клавишами Ctrl + Q Ctrl + А).

¨ Вводим заменяемый текст (Char) и заменяющий (int) в предлагаемые подокна.

¨ Активизируем (проверяем) пункт «Prompt on replace».

 

 

Нажатие кнопки «ОК» приводит к нахождению первого упоминания символов char появлению окна- диалога «Replace this occurrence of ‘Char’?».

 

 

Выбираем однократную замену (нажатие кнопки «Yes»). Результат замены:

 

 

Замена (при необходимости) последующих аналогов выполняется командой дальнейшего поиска Search\Search Again... (горячей клавишей F3). Если аналог найден – отображается окно-диалога «Replace this occurrence of ‘Char’?», позволяя выполнить замену сразу во всей области текста активизацией кнопки «Change All» либо найденного фрагмента нажатием кнопки «Yes».

Выбрав вариант замены во всем тексте, активизируем кнопку «Change All». Результат замены представлен ниже.

 

Анализ содержимого окна редактора текста подтверждает замену всех содержавшихся в тексте последовательностей символов Char на желаемый фрагмент int.

Рассмотренные методики создания, редактирования и сохранения текстовой документов в интегрированной среде Borland C++ позволяют эффективно создавать, корректировать и сохранять любые исходные модули программ пользователей.

Контрольные вопросы

1. Что такое исходный модуль программы пользователя?

2. Как загрузить текстовый редактор?

3. Какова методика создания файла исходного модуля?

4. Как осуществляется запись исходного модуля на диск?

5. Чем отличаются команды сохранения файла?

6. В чем смысл основных операций редактирования?

7. Когда применяются операции редактирования?

8. Чем отличается копирование от вырезания?

9. Как осуществить поиск и повторный поиск в тексте?

10. Как осуществить поиск фрагмента с учетом регистра?

11. Как организовать поиск слова во всем тексте?

12. Чем отличаются операции поиска и замены?

13. Какова методика однократной замены слова?

14. Какова методика многократной замены последовательности символов?