Все операции поиска/замены условно можно разделить на три типа:

традиционные (поиск/замена одного фрагмента на другой с форматированием);

поиск специальных символов (короткое тире, неразрывный дефис, символ табуляции и т. п.);

поиск без четких критериев (по маске).

Поскольку, как правило, в процессе поиска/замены меняется количество символов в тексте, потенциапьно возможно возникновение проблемных ситуаций: например, если текста стало меньше, то могут возникнуть ссылки на несуществующий текст. В то же время, в своей практике автор ни разу не встречался с такими проблемами (спасибо программистам из Adobe), если же вдруг они возникнут, решение достаточно простое: нужно искать не с начала, а с конца текста. В гаком случае никакая операция замены к смещению в индексации символов не приведет.

7.1. Встроенные функции InDesign CS, CS2

Для операций поиска/замены в InDesign CS и CS2 предусмотрено использование объектов findPreferences И changePreferences соответственно, а параметры поиска или замены (аналоги опций в окне Find/Replace) задаются как свойства этих объектов. Иными словами, объекты являются ничем иным, как стилем для выполнения соответствующей операции. Перед проведением по-иска'замены их желательно очищать (как известно, InDesign при повторном вызове окна Find/Replace храиит ранее введенные значения)- для этого предусмотрено специальное значение NothingEnum.nothing.

7.1.1. Поиск текста без форматирования

Вот как происходит поиск неформатированного текста встроенными функциями InDesign:

// Сброс предыдущих настроек. Операция обязательна, поскольку InDesign // помнит параметры предыдущего поиска арр.findPreferences •= NothingEnum.nothing; app.changePreferences = NothingEnum.nothing;

// Поиск в документе текста "Пример", арр.findPreferences.findText = " Пример";

// Установка пользовательских настроек для поиска with (арр.findPreferences)( caseSensitive = false; wholeWord = false;

)

var myFoundltems = app.documents[0].findText();

alert("Найдено " + myFoundltems.length + " совпадений");

7.1.2. Замена текста без форматирования

Кроме поиска, InDesign может заменять одни фрагмент текста на другой. Рассмотрим простейший пример замены текста без учета форматирования (листинг 7.1).

■ Листинг 7.1. Замена текста без форматирования

// Сброс предыдущих настроек

app.findTextPreferences = NothingEnum.nothing; app.changeTextPreferences = NothingEnum.nothing;

// Установка опций для поиска

app.findChangeTextOptions.caseSensitive = false; app.findChangeTextOptions.wholeWord = false;

// Замена одной строки "copy" на другую "text" app.findPreferences.findText = "copy"; app.changePreferences.changeTo = "text"; app.documents[0].changeText();

// Подготовка к следующему поиску/замене

app.findTextPreferences = NothingEnum.nothing;

app.changeTextPreferences = NothingEnum.nothing;


⇐ вернуться назад | | далее ⇒