[ID CC-CC2019] Помогите написать замену 12 слов

sashamo

Топикстартер
10 лет на форуме
Сообщения
486
Реакции
9
Здравстуйте! Помогите пожалуйста. Нужно написать замену: искать слова (конкретные слова 12 штук) и заменять их в такой же последованости на те же слова но с заменой всех прописных букв на первую заглавную а дальше маленькими + будет менятся стиль оформления. То есть нужно исакать в тексте например слова: мама, папа, дедушка, бабушка и заменять на их же аналоги но с другим форматировнием.
 
Последнее редактирование:

К.Т.

Участник
Сообщения
301
Реакции
311
1. Изменить регистр слов:
- скрипт InDesign: change case with GREP | Peter Kahrel
- используемое выражение \<[МПДБ]\K(АМА|АПА|ЕДУШКА|АБУШКА)

2. Изменить форматирование:
(Мама|Папа|Дедушка|Бабушка) с заменой на формат.
 

Любимцев

12 лет на форуме
Сообщения
2 934
Реакции
1 791
  • Спасибо
Реакции: Aberdeen

sashamo

Топикстартер
10 лет на форуме
Сообщения
486
Реакции
9
1. Изменить регистр слов:
- скрипт InDesign: change case with GREP | Peter Kahrel
- используемое выражение \<[МПДБ]\K(АМА|АПА|ЕДУШКА|АБУШКА)

2. Изменить форматирование:
(Мама|Папа|Дедушка|Бабушка) с заменой на формат.

Что то не работает замена. Делаю грип замену: поиск: \<[ATGCLVLSSCAP]\K(ARIES|TAURUS|GEMINI|CANCER|LEO|VIRGO|LIBRA|SCORPIO|SAGITTARIUS|CAPRICORN|AQUARIUS|PISCES)
меняю на: (Aries|Taurus|Gemini|Cancer|Leo|Virgo|LIBRA|SCORPIO|SAGITTARIUS|CAPRICORN|AQUARIUS|PISCES)

не находит он слов: ARIES TAURUS GEMINI CANCER LEO VIRGO LIBRA SCORPIO SAGITTARIUS CAPRICORN AQUARIUS PISCES
 

andrejK

15 лет на форуме
Сообщения
10 304
Реакции
5 214
\<[ATGCLVLSSCAP]\K(RIES|AURUS|EMINI|ANCER|EO|IRGO|IBRA|CORPIO|AGITTARIUS|APRICORN|QUARIUS|ISCES)
 

Eugenyus

Модератор
12 лет на форуме
Сообщения
1 946
Реакции
3 569
Первый просто меняет одно на другое, второй меняет регистр.
Имя символьного стиля только вбейте.
JavaScript:
var doc = app.activeDocument;
var sel = doc.selection[0];
app.findGrepPreferences = app.changeGrepPreferences = null;
app.changeGrepPreferences.appliedCharacterStyle = "%%Имя символьного стиля%%";
var fWords = ["ARIES", "TAURUS", "GEMINI", "CANCER", "LEO", "VIRGO", "LIBRA", "SCORPIO", "SAGITTARIUS", "CAPRICORN", "AQUARIUS", "PISCES"];
var cWords = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"];

for (i = 0; i < fWords.length; i++){
    app.findGrepPreferences.findWhat = fWords[i];
    app.changeGrepPreferences.changeTo = cWords[i];
    sel.changeGrep();
}
JavaScript:
var doc = app.activeDocument;
var sel = doc.selection[0];
app.findGrepPreferences = app.changeGrepPreferences = null;
app.changeGrepPreferences.appliedCharacterStyle = "%%Имя символьного стиля%%";
var fWords = ["ARIES", "TAURUS", "GEMINI", "CANCER", "LEO", "VIRGO", "LIBRA", "SCORPIO", "SAGITTARIUS", "CAPRICORN", "AQUARIUS", "PISCES"];

for (i = 0; i < fWords.length; i++){
    app.findGrepPreferences.findWhat = fWords[i];
    var f = sel.findGrep();
    for (j = f.length - 1; j >= 0; j--){
        f[j].texts[0].changecase(ChangecaseMode.TITLECASE);
        }
}
 
  • Спасибо
Реакции: xamburger

sashamo

Топикстартер
10 лет на форуме
Сообщения
486
Реакции
9
Первый просто меняет одно на другое, второй меняет регистр.
Имя символьного стиля только вбейте.
JavaScript:
var doc = app.activeDocument;
var sel = doc.selection[0];
app.findGrepPreferences = app.changeGrepPreferences = null;
app.changeGrepPreferences.appliedCharacterStyle = "%%Имя символьного стиля%%";
var fWords = ["ARIES", "TAURUS", "GEMINI", "CANCER", "LEO", "VIRGO", "LIBRA", "SCORPIO", "SAGITTARIUS", "CAPRICORN", "AQUARIUS", "PISCES"];
var cWords = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"];

for (i = 0; i < fWords.length; i++){
    app.findGrepPreferences.findWhat = fWords[i];
    app.changeGrepPreferences.changeTo = cWords[i];
    sel.changeGrep();
}
JavaScript:
var doc = app.activeDocument;
var sel = doc.selection[0];
app.findGrepPreferences = app.changeGrepPreferences = null;
app.changeGrepPreferences.appliedCharacterStyle = "%%Имя символьного стиля%%";
var fWords = ["ARIES", "TAURUS", "GEMINI", "CANCER", "LEO", "VIRGO", "LIBRA", "SCORPIO", "SAGITTARIUS", "CAPRICORN", "AQUARIUS", "PISCES"];

for (i = 0; i < fWords.length; i++){
    app.findGrepPreferences.findWhat = fWords[i];
    var f = sel.findGrep();
    for (j = f.length - 1; j >= 0; j--){
        f[j].texts[0].changecase(ChangecaseMode.TITLECASE);
        }
}
По первому скрипту выдает такую вот ошибку
 

Вложения

  • 1.jpg
    1.jpg
    291.3 КБ · Просм.: 83

azz

alexey
15 лет на форуме
Сообщения
657
Реакции
323
предположу что у вас не символьный стиль а стиль параграфа "Horoskop-znak"
 

sashamo

Топикстартер
10 лет на форуме
Сообщения
486
Реакции
9
да нет, все правильно со стилем, единственное что у меня в параграфном стиле Horoskop-text выставлено что первому слову в каждом абзаце назначать симовльный стиль Horoskop-znak. Может это как то влияет на работу скрипта?
 

sashamo

Топикстартер
10 лет на форуме
Сообщения
486
Реакции
9
вот скрин. PS. наверное глюк потому что символьный стиль в папке лежит. А как папку правильно прописать в скрипте?
 

Вложения

  • 1.jpg
    1.jpg
    311 КБ · Просм.: 92
Последнее редактирование:

Eugenyus

Модератор
12 лет на форуме
Сообщения
1 946
Реакции
3 569
символьный стиль в папке лежит
Да.
JavaScript:
var doc = app.activeDocument;
var sel = doc.selection[0];
app.findGrepPreferences = app.changeGrepPreferences = null;
app.changeGrepPreferences.appliedCharacterStyle = doc.characterStyleGroups.item("Games").characterStyles.item("Horoskop-znak");
var fWords = ["ARIES", "TAURUS", "GEMINI", "CANCER", "LEO", "VIRGO", "LIBRA", "SCORPIO", "SAGITTARIUS", "CAPRICORN", "AQUARIUS", "PISCES"];
var cWords = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"];

for (i = 0; i < fWords.length; i++){
    app.findGrepPreferences.findWhat = fWords[i];
    app.changeGrepPreferences.changeTo = cWords[i];
    sel.changeGrep();
}
 
  • Спасибо
Реакции: sashamo

veretragna

γνώσις
Сообщения
578
Реакции
191
Если не хочется перебирать папки, можно использовать document.allCharacterStyles.itemByName().
allCharacterStyles выдает коллекцию стилей подряд, без папок.
 
Последнее редактирование:

Skvoznyak

15 лет на форуме
Сообщения
5 093
Реакции
1 996
только вот там нет itemByName, это не коллекция, а обычный массив
 

sashamo

Топикстартер
10 лет на форуме
Сообщения
486
Реакции
9
Спасибо, поправил, все заработало!
 

DenSen

15 лет на форуме
Сообщения
185
Реакции
72
Искал решение сходной задачи, нашел скрипт "Change Letter Case" от 21.03.2021

В заданных абзацных стилях, символьных стилях, а также GREP-выражениях меняет регистры: UPPERCASE, lowercase, Title Case, and Sentence case.
 

Вложения

  • change-letter-case.zip
    3.8 КБ · Просм.: 35