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

  • Автор темы Автор темы sashamo
  • Дата начала Дата начала

sashamo

Топикстартер
10 лет на форуме
Сообщения
547
Реакции
13
Здравстуйте! Помогите пожалуйста. Нужно написать замену: искать слова (конкретные слова 12 штук) и заменять их в такой же последованости на те же слова но с заменой всех прописных букв на первую заглавную а дальше маленькими + будет менятся стиль оформления. То есть нужно исакать в тексте например слова: мама, папа, дедушка, бабушка и заменять на их же аналоги но с другим форматировнием.
 
Последнее редактирование:
1. Изменить регистр слов:
- скрипт InDesign: change case with GREP | Peter Kahrel
- используемое выражение \<[МПДБ]\K(АМА|АПА|ЕДУШКА|АБУШКА)

2. Изменить форматирование:
(Мама|Папа|Дедушка|Бабушка) с заменой на формат.
 
  • Спасибо
Реакции: Aberdeen
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
 
\<[ATGCLVLSSCAP]\K(RIES|AURUS|EMINI|ANCER|EO|IRGO|IBRA|CORPIO|AGITTARIUS|APRICORN|QUARIUS|ISCES)
 
Первый просто меняет одно на другое, второй меняет регистр.
Имя символьного стиля только вбейте.
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
Первый просто меняет одно на другое, второй меняет регистр.
Имя символьного стиля только вбейте.
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 КБ · Просм.: 271
предположу что у вас не символьный стиль а стиль параграфа "Horoskop-znak"
 
да нет, все правильно со стилем, единственное что у меня в параграфном стиле Horoskop-text выставлено что первому слову в каждом абзаце назначать симовльный стиль Horoskop-znak. Может это как то влияет на работу скрипта?
 
вот скрин. PS. наверное глюк потому что символьный стиль в папке лежит. А как папку правильно прописать в скрипте?
 

Вложения

  • 1.jpg
    1.jpg
    311 КБ · Просм.: 277
Последнее редактирование:
символьный стиль в папке лежит
Да.
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
Если не хочется перебирать папки, можно использовать document.allCharacterStyles.itemByName().
allCharacterStyles выдает коллекцию стилей подряд, без папок.
 
Последнее редактирование:
только вот там нет itemByName, это не коллекция, а обычный массив
 
Спасибо, поправил, все заработало!
 
Искал решение сходной задачи, нашел скрипт "Change Letter Case" от 21.03.2021

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

Вложения