многоточие в конце абзаца

  • Автор темы Автор темы iv-mi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

iv-mi

Топикстартер
15 лет на форуме
Сообщения
567
Реакции
384
Определяю в CS3, каков последний символ абзаца
myLastCharInPara = myStory.paragraphs[j].characters[-2].contents;
Для отладки программмы в пошаговом режиме в окне Java Script Console ввожу myLastCharInPara и по нажатии Enter получаю в строке Result: этот символ.
Для всех, похоже, символов работает безупречно, кроме многоточия.
Для него программа возвращает 1397518451.
Это только у меня?..
Как отловить многоточие, когда оно в конце абзаца?

Версия отладчика
2.0.0.58 ExtendedScript 3.7.6.9 Script UI 3.2.34
 
Ответ: многоточие в конце абзаца

А почему не Characters.lastItem?
 
Ответ: многоточие в конце абзаца

А почему не Characters.lastItem?
Да у меня все правильно сделано. Characters.lastItem вернет последний символ в выборке, в случае абзаца это будет знак перевода строки. Мне же нужен символ, что перед ним, поэтому используется characters[-2].contents. Вопрос-то в том, что все символы определяются нормально, а в случае многоточия возвращается нумератор. То ли глюк, то ли фича... Как с этим бороться?
 
Ответ: многоточие в конце абзаца

iv-mi сказал(а):
myLastCharInPara = myStory.paragraphs[j].characters[-2].contents;
Индексы не могут быть отрицальтеные, попробуйте так

myLastCharInPara = myStory.paragraphs[j].characters[myStory.paragraphs[j].characters.length-2].contents;
 
Ответ: многоточие в конце абзаца


Не по теме:
Strizh
А где же аут оф баундс? :D

 
Ответ: многоточие в конце абзаца

Индексы не могут быть отрицальтеные, попробуйте так
myLastCharInPara = myStory.paragraphs[j].characters[myStory.paragraphs[j].characters.length-2].contents;

Попробовал, результат тот же.
Утверждение, что в JavaScript индексы не могут быть отрицательными — неверное. :)
characters[-1].contents возвращает последний символ выборки, characters[-2].contents -- второй от конца выборки, и т.д. Это не я придумал, это стандартная возможность, изложенная в книге Scripting InDesign with JavaScript, автор Peter Kahrnel.

В общем, никто из откликнувшихся не пробовал на своих машинах, и пока всё в стадии вялых предположений.
 
Ответ: многоточие в конце абзаца

iv-mi сказал(а):
Для всех, похоже, символов работает безупречно, кроме многоточия.
Для него программа возвращает 1397518451.
Ну не для всех :) там еще много SpecialCharacters
SpecialCharacters.ellipsisCharacter=1397518451
а что мешает проверять if (..characters[-что надо].contents==1397518451)?
 
Ответ: многоточие в конце абзаца

Да, Steve, я уже так и сделал, спасибо. Просто смутило, что точка с запятой или двоеточие -- это обычные символы, а многоточие и тире -- специальные. В чем логика такого разделения, так мне пока и не ясно. Думал, может, что-то не так делаю.
 
Статус
Закрыто для дальнейших ответов.