Прибавить число ко всем числам в тексте

Статус
Закрыто для дальнейших ответов.

Serbel

Участник
Топикстартер
Сообщения
376
Реакции
88
Имеется готовый и вычитанный указатель к книге следующего вида:
Код:
слово 10, 15–19, 22, 26, 32, 45, 56–58, 64, 66, 85, 91–92, 96, 98–99, 103, 108–109, 112, 115, 117–118, 121–122, 126, 132, 134, 151–152, 155, 183, 191, 199, 208, 221–222, 242, 246, 263, 282, 284, 286, 290, 295–298, 300, 310, 319, 340, 355, 366
Из-за изменения макета требуется ко всем числам, больше 195, прибавить 2 страницы. Это можно сделать всем скопом? (а не двумя сотнями последовательных замен от конца к началу типа 394 > 396, 393 > 395, 392 > 394)
 

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 323
Реакции
7 870
О какой программе речь?
 

Валера1966

15 лет на форуме
Сообщения
1 291
Реакции
1 391
Надо скрипт писать.
Или строчки со "всеми числами, большими 195", перетащить в Excel.
Там диапазоны числе придётся порезать, в разные колонки поставив (поиском по строке наличия дефиса (=ЕСЛИ (НАЙТИ("-";А1; >1); и так далее...). И только потом делать результирующую таблицу со значениями "+2".
Затем обратно склеить и вернуть в программу вёрстки, где окончательно победить.
 

Serbel

Участник
Топикстартер
Сообщения
376
Реакции
88
О какой программе речь?
О любой, которая, работая с голым текстом, в котором есть запятые и кириллица, сможет проделать требующуюся операцию.

Или строчки со "всеми числами, большими 195", перетащить в Excel.
Там, к сожалению, не строчки, поэтому придётся резать, убирать запятые, собирать обратно. Кажется, проще серию автозамен провести (скрипты писать не умею).
 

Serbel

Участник
Топикстартер
Сообщения
376
Реакции
88
Моё решение:
  1. Создаётся файл в Excel с двумя колонками. В одной указываются все числа от последней страницы книги до нужной (обязательно в обратном порядке). В другой — числа со сдвигом.
  2. Колонки выделяются, копируются и вставляются в блокнот.
  3. В блокноте регулярным выражением строки типа 197 199 превращаются в
    Код:
    text    {findWhat:"197"}    {changeTo:"199"}    {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:true}
  4. Этот код вставляется в индизайновский скрипт FindChangeByList.jsx.
 
  • Спасибо
Реакции: Валера1966

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 188
Реакции
10 844
Можно, конечно, и так, но это все равно что левой пяткой правое ухо почесать. Эта тема, кстати, перекликается с моей недавней, о невозможности грепом поменять выражение на зависимую от него замену. То есть, можно, но только подставив туда блок кода.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 188
Реакции
10 844
В общем, ни индизайна, ни FindChangeByList под рукой проверить нету, но через repalce это будет как то так:
replace(/(\d+)/g,function(N){return ((Number(N)>195)?Number(N)+2:Number(N));})
 
  • Спасибо
Реакции: Serbel и Валера1966
Статус
Закрыто для дальнейших ответов.