- Сообщения
- 8
- Реакции
- 0
Есть такая необычная задачка.
Дан текстовый фрейм, содержимое которого — содержание (оглавление) документа в виде:
Постоянный подзаголовок 1
Случайное название главы 1.....2
Случайное название главы 2.....10
.
.
.
Случайное название главы 8...36,
где после точек идут номера страниц. Таких групп Подзаголовок — последовательность глав всегда несколько.
Требуется получить из этого текста номер страницы, с которой начинается первая глава раздела, в данном случае это цифра 2. Поскольку таких групп несколько, то в итоге должен быть сформирован массив страниц, с которых начинаются подразделы (чтобы потом расставить по ним свои собственные мастер-страницы).
Наименование подзаголовка всегда заранее известно, поэтому первое, что приходит на ум — это простой перебор: два вложенных цикла — по строкам документа, и по набору строк-вариантов подзаголовка с дальнейшим отловом цифры их следующего абзаца.
Но затем прикинув время выполнения (а строк содержания во фрейме — от 200 до 300), я решил попробовать воспользоваться поиском. Примерно так:
Так я безо всяких циклов нахожу подзаголовок. Но проблема в том, что я не могу понять, как мне пройти от найденного текстового объекта myFoundItems[0] по цепочке к следующему абзацу и его последнему слову — той самой искомой цифре.
Можно ли вообще решить мою задачу таким способом?
Дан текстовый фрейм, содержимое которого — содержание (оглавление) документа в виде:
Постоянный подзаголовок 1
Случайное название главы 1.....2
Случайное название главы 2.....10
.
.
.
Случайное название главы 8...36,
где после точек идут номера страниц. Таких групп Подзаголовок — последовательность глав всегда несколько.
Требуется получить из этого текста номер страницы, с которой начинается первая глава раздела, в данном случае это цифра 2. Поскольку таких групп несколько, то в итоге должен быть сформирован массив страниц, с которых начинаются подразделы (чтобы потом расставить по ним свои собственные мастер-страницы).
Наименование подзаголовка всегда заранее известно, поэтому первое, что приходит на ум — это простой перебор: два вложенных цикла — по строкам документа, и по набору строк-вариантов подзаголовка с дальнейшим отловом цифры их следующего абзаца.
Но затем прикинув время выполнения (а строк содержания во фрейме — от 200 до 300), я решил попробовать воспользоваться поиском. Примерно так:
Код:
app.findTextPreferences.appliedParagraphStyle = "Стиль подзаголовка";
app.findTextPreferences.findWhat = "Постоянный подзаголовок 1";
var myFoundItems = myTOC.findText();
Так я безо всяких циклов нахожу подзаголовок. Но проблема в том, что я не могу понять, как мне пройти от найденного текстового объекта myFoundItems[0] по цепочке к следующему абзацу и его последнему слову — той самой искомой цифре.
Можно ли вообще решить мою задачу таким способом?