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

sashamo

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

К.Т.

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

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

Любимцев

15 лет на форуме
Сообщения
4 199
Реакции
2 055
  • Спасибо
Реакции: Aberdeen

sashamo

Топикстартер
12 лет на форуме
Сообщения
533
Реакции
10
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

R.I.P.
Сообщения
10 300
Реакции
5 218
\<[ATGCLVLSSCAP]\K(RIES|AURUS|EMINI|ANCER|EO|IRGO|IBRA|CORPIO|AGITTARIUS|APRICORN|QUARIUS|ISCES)
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Первый просто меняет одно на другое, второй меняет регистр.
Имя символьного стиля только вбейте.
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

Топикстартер
12 лет на форуме
Сообщения
533
Реакции
10
Первый просто меняет одно на другое, второй меняет регистр.
Имя символьного стиля только вбейте.
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 КБ · Просм.: 215

azz

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

sashamo

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

sashamo

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

Вложения

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

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
символьный стиль в папке лежит
Да.
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
Реакции
199
Если не хочется перебирать папки, можно использовать document.allCharacterStyles.itemByName().
allCharacterStyles выдает коллекцию стилей подряд, без папок.
 
Последнее редактирование:

Skvoznyak

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

sashamo

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

densen

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

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

Вложения

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