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

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

Serbel

Топикстартер
10 лет на форуме
Сообщения
400
Реакции
92
Имеется готовый и вычитанный указатель к книге следующего вида:
Код:
слово 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)
 
О какой программе речь?
 
Надо скрипт писать.
Или строчки со "всеми числами, большими 195", перетащить в Excel.
Там диапазоны числе придётся порезать, в разные колонки поставив (поиском по строке наличия дефиса (=ЕСЛИ (НАЙТИ("-";А1; >1); и так далее...). И только потом делать результирующую таблицу со значениями "+2".
Затем обратно склеить и вернуть в программу вёрстки, где окончательно победить.
 
О какой программе речь?
О любой, которая, работая с голым текстом, в котором есть запятые и кириллица, сможет проделать требующуюся операцию.

Или строчки со "всеми числами, большими 195", перетащить в Excel.
Там, к сожалению, не строчки, поэтому придётся резать, убирать запятые, собирать обратно. Кажется, проще серию автозамен провести (скрипты писать не умею).
 
Моё решение:
  1. Создаётся файл в Excel с двумя колонками. В одной указываются все числа от последней страницы книги до нужной (обязательно в обратном порядке). В другой — числа со сдвигом.
  2. Колонки выделяются, копируются и вставляются в блокнот.
  3. В блокноте регулярным выражением строки типа 197 199 превращаются в
    Код:
    text    {findWhat:"197"}    {changeTo:"199"}    {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:true}
  4. Этот код вставляется в индизайновский скрипт FindChangeByList.jsx.
 
  • Спасибо
Реакции: Валера1966
Можно, конечно, и так, но это все равно что левой пяткой правое ухо почесать. Эта тема, кстати, перекликается с моей недавней, о невозможности грепом поменять выражение на зависимую от него замену. То есть, можно, но только подставив туда блок кода.
 
В общем, ни индизайна, ни FindChangeByList под рукой проверить нету, но через repalce это будет как то так:
replace(/(\d+)/g,function(N){return ((Number(N)>195)?Number(N)+2:Number(N));})
 
  • Спасибо
Реакции: Serbel и Валера1966
Статус
Закрыто для дальнейших ответов.