Объединить текст

  • Автор темы Автор темы otdel21
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

otdel21

Участник
Топикстартер
Сообщения
118
Реакции
30
Есть текст:
Гарант, магазин..........3
Гарант, магазин..........8
Гарантия, магазин.......6
Гарантия, магазин.........20
Надо получить:
Гарант, магазин.......3, 8
Гарантия, магазин........6, 20
Это справочник. До сих пор делал руками. Может, кто сталкивался и что-нибудь придумал.
Поиском нашёл только про программу ТВ. Попробовал перенастроить клинер - не хватает знаний.
 
Ответ: Объединить текст

На работе скрипт есть. Часа через два доберусь — сброшу. А пока вопрос: отточие как сделано?
 
Ответ: Объединить текст

А откуда берется текст? Или это данность?
Это совсем руками делалось или все же с помощью указателей?
 
Ответ: Объединить текст

Здесь просто пример. Список делается через функцию "оглавление" со всего справочника. Там масса повторов названий фирм (из разных рубрик). Всего фирм около 2 тысяч.
 
Ответ: Объединить текст

Обещанный скрипт. Версия CS3.

Перед запуском сохраните копию файла.

Текст, который будет обрабатываться, должен иметь конструкцию "слово(сочетание) — отточие (Right Indent Tab) — номер — конец абзаца". Никаких заголовков, никаких пустых строк и т.п. в материале быть не должно.
Если отточие сделано простым табом, в тексте скрипта в строках 15 и 20 замените ~y на \\t.

Перед запуском установите курсор в обрабатываемый текст.
 

Вложения

Ответ: Объединить текст

Спасибо (на кнопку нажал), версия CS5, но попробую разобраться. Пошёл пробовать и учиться.
 
Ответ: Объединить текст

Ещё раз спасибо. Всё отработало на тестовом кусочке. Выдал сообщение в конце работы об ошибке 45 (ссылка на F2), но это, как я понял, отсыл к вашим заменам. Вроде не критично у меня. Трогать не буду.
 
Ответ: Объединить текст

А, точно, там количество строк уменьшается, и он у меня как-то криво это учитывает. Извиняйте, под свои нужды в скоростном режиме скрипт готовился (как всегда:)), не отследил. На работу, впрочем, это не влияет, результат должен был получиться тот, что нужен.
 
Ответ: Объединить текст

Вечером запущу на весь список. Результат интресен?
 
Ответ: Объединить текст

Опробовал по полной программе - 60 полос 7 кеглем. Работал минут 12-13 (по ощущениям, не догадался засечь время). Корректор читает - вроде нет замечаний пока. Ещё бы он выбирал строчки по всему тексту, а не подряд стоящие (но это мечты). Следующая подобная работа планируется только в конце след. года. Ещё раз благодарю автора.
 
Ответ: Объединить текст

Обновил скрипт.

Обновление.
Добавлено:
а) выбор разделителя (варианты: Tab, Right Indent Tab, Em Space);
б) проверка текста на соответствие необходимой конструкции ("слово(сочетание) — разделитель — номер — конец абзаца");
в) если текст не прошел проверку - маркировка "неправильных" строк (опционально; о способе маркировки можно будет узнать, нажав соответствующую кнопку в окне скрипта);
г) Progress Bar - полоса прогресса, отображающая объем выполненной скриптом работы.

Взять можно по тому же адресу:
http://forum.rudtp.ru/resources/alfavitnyj-ukazatel-sovmeschenie-odinakovyx-strok.74/
 
Ответ: Объединить текст

Евгений. А если строки вида -

Гарант, магазин..........3
Гарант, магазин.......5, 8

твой скрипт обработает это?
(у меня такая же задача стоит, только объединение индекса)

+ можно ещё кусочек следующего кода - заменить в каждом абзаце первую букву на прописную если она строчная...
 
Ответ: Объединить текст

Вечером посижу, сделаю.
 
Ответ: Объединить текст

andrejK, готово, можно забирать по той же ссылке. Проверять, традиционно, на копии.
 
Ответ: Объединить текст

ага. попробую в скором времени.

там кусок с первой буквой прописной в теле легко найти?
его б мне отдельно сначала запустить.
 
Ответ: Объединить текст

Я там опционально сделал - птица в первом окне "делать - не делать". Если делать, то он сначала меняет регистр, потом совмещает строки. Или по-другому надо было?
Если отдельным куском, то поставить курсор в текст и:
Код:
app.activeDocument.selection[0].parentStory.paragraphs.everyItem().characters[0].changecase(ChangecaseMode.UPPERCASE);
 
Статус
Закрыто для дальнейших ответов.