[ID CC-CC2022] Как в условие записать "все буквы"?

hulk1776

Топикстартер
15 лет на форуме
Сообщения
738
Реакции
21
Условие находится в скриптике обработки списка:
Код:
 ...
if((characters[1].contents == ")") || (characters[1].contents == "."))
        {
        //characters[1].contents = "";
        characters[2].contents = "\t";
        }
То есть я добавляю после скобки или точки табуляцию.
Но если в списке нет номеров или каких иных знаков, а строки начинаются сразу со слов (после импорта из ворда периодически пропадают символы списка), то приходится пользоваться другой строкой:
characters[0].contents = "—" + "\t" + characters[0].contents;
Хотелось бы это записать в одном скрипте. Можно тут как-то записать условие, что если строка начинается с простой буквы, то "делам так"?
 
Хотелось бы это записать в одном скрипте. Можно тут как-то записать условие, что если строка начинается с простой буквы, то "делам так"?
Вам проще наоборот сделать. Если есть ) или . , то сделать одно, иначе else другое.
 
Можно тут как-то записать условие, что если строка начинается с простой буквы, то "делам так"?
Например, проверка, находится ли символ в диапазоне от "а" до "я":
(characters[1].contents >= "а") && (characters[1].contents <= "я")

(Но по-моему, всякую подобную обработку текста удобнее делать настроенной последовательностью grep-поисков).
 
  • Спасибо
Реакции: hulk1776
Условие вставки буллита (тирешки) в начале списочной строки или ее невставки.
Выделяю обрабатываемые абзацы и в цикле их просмотра решается, ставить тире или нет.
Код:
var myText = app.selection[0].paragraphs;
mstyle = app.activeDocument.paragraphStyleGroups.item("mBulls").paragraphStyles.item("mBull_num");
for (i=0; i < myText.length; i++) {
with (myText[i])
{
    //if(characters[0].contents == '\u0091') // длинное тире, почему-то просто указанием символа — не находится
      if((characters[1].contents != ")") && (characters[1].contents != "."))
        { // обработка тирешки в начале списка
        characters[0].contents = "—";
        characters[1].contents = "\t";
        }

//~     if(characters[0].contents == "— ")
    if((characters[1].contents == ")") || (characters[1].contents == "."))
        {
        //characters[1].contents = "";
        characters[2].contents = "\t";
        }
Списки могут быть:
1) найдено
2) не найдено...

1. Найдено
2. Не найдено...


В этих случаях после второго символа нужно ставить tab.
Если список вида
найдено
не найдено...

то перед первым символов надо поставить тире и tab.
 
Например, проверка, находится ли символ в диапазоне от "а" до "я":
(characters[1].contents >= "а") && (characters[1].contents <= "я")

(Но по-моему, всякую подобную обработку текста удобнее делать настроенной последовательностью grep-поисков).
Только не первый символ, а нулевой. После пары тумаков заработало))
По грепу долго мозговать. А так по ходу текста видишь и оформляешь. Хотя грепом быстрее. На досуге можно подумать.
 
Теперь не могу узнать длинное тире в начале списка.
if(((characters[0].contents >= "а") && (characters[0].contents <= "я")) || (characters[0].contents == "~_")){
Инди опять же не видит символ длинного тире в списке типа:
— пункт один
— пункт два...
 
contents — это текстовое содержимое объекта как оно есть, а не его греп-обозначение.
То есть в данном случае само длинное тире.
 
Так вот Индизайн (у меня) и видит даже текст:
if(characters[0].contents == "—"){
Инди считает, что в данном случае условие не выполнено. Хотя строка начинается с длинного тире.
Поэтому хотел по коду чтобы узнавал. Но уже забыл, как записать код EM_DASH'a.
 
contents — это текстовое содержимое объекта как оно есть, а не его греп-обозначение.
То есть в данном случае само длинное тире.
На такую запись
characters[0].contents == \u2014)
пишет — undefined.
Если в одинарных кавычках - не узнает.
 
Кто пишет и когда?
И почему нельзя алертом код посмотреть первого символа?
Не помню, как записать вызов кода на просмотр. CharAt, CodeChar. То ли по первому символу в выделении, то ли в первому после курсора. Пока ESTK отказалась это показать.