[ID CC-CC2021] Х-координата последней буквы в строке

rezunoff

Участник
Топикстартер
Сообщения
69
Реакции
13
Подскажите как узнать Х-координату (~myT[j].insertionPoints[-1].horizontalOffset~) последней буквы в строке, после которой могут быть: ( !, ?, ..., », пробелы) в разной последовательности и кол-ве. Как их исключить из рассмотрения?
1599415197833.png
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Найдите сперва индекс последнего значимого символа согласно вашим условиям.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я с утюга, в маршрутке.
Бутрин скорее проснется и покажет.
Но не совсем пойму, что именно вам непонятно. У каждой линии есть массив characters, берете последний элемент его, сравниваете contents с набором незначимых символов (если их меньше, чем значимых, разумеется), затем предпоследний и т.д. до несовпадения. Ну и как только оно наступит у этого самого элемента и берете horizontalOffset, что непонятного?
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
JavaScript:
var line = app.selection[0].lines[0];
var beg = 0;
var end = line.characters.length - 1;
var last = null;
while (end >= beg) {
    if ((/[a-zA-Zа-яА-Я]/i).test(line.characters[end].contents.toString())) {
        last = line.characters[end];
        break;
    }
    end--;
}
if (last && last.isValid) {
    $.writeln(last.insertionPoints[1].horizontalOffset);
} else {
    $.writeln('No valid characters');
}
 
  • Спасибо
Реакции: rezunoff

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

rezunoff

Участник
Топикстартер
Сообщения
69
Реакции
13
JavaScript:
var line = app.selection[0].lines[0];
var beg = 0;
var end = line.characters.length - 1;
var last = null;
while (end >= beg) {
    if ((/[a-zA-Zа-яА-Я]/i).test(line.characters[end].contents.toString())) {
        last = line.characters[end];
        break;
    }
    end--;
}
if (last && last.isValid) {
    $.writeln(last.insertionPoints[1].horizontalOffset);
} else {
    $.writeln('No valid characters');
}
То что надо!!!
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
Ты все ж решил на значимые проверять? А если, например, дефисы?
Я не в курсе, что именно значимым считается. Сделал буквы, но с устатку затупил. В выражении не нужны верхние символы, поскольку ключ i используется.
 

rezunoff

Участник
Топикстартер
Сообщения
69
Реакции
13
Я не в курсе, что именно значимым считается. Сделал буквы, но с устатку затупил. В выражении не нужны верхние символы, поскольку ключ i используется.
К сожалению, дефисы и многоточия (~e) - не видит. Как можно их игнорировать?