VladSh wrote:YuS
TextReplace не подходит - надо работать с программно полученным текстом.
Да, кстати, почему не подходит? В чем там принципиальное отличие текста?
Posted: Sat Jan 09, 2016 9:51 am
by VladSh
yozhic, YuS
Спасибо за помощь и пояснения! Теперь понятно
YuS wrote:Да, кстати, почему не подходит? В чем там принципиальное отличие текста?
В TextReplace отсутствует параметр чтобы передать текст. Т.е. этот метод сам получает данные из окна редактирования AkelPad. Регулярки хороши тем, что они работают с произвольным текстом, который может быть предварительно программно обработан.
Posted: Fri Jan 22, 2016 11:13 pm
by Skif_off
Подскажите, пожалуйста, как можно в строке "^\t++<" заменить табуляцию на точно такое же количество пробелов?
Предполагается использовать AkelPad.TextReplace().
Posted: Sat Jan 23, 2016 5:46 am
by YuS
Skif_off wrote:как можно в строке "^\t++<" заменить табуляцию на точно такое же количество пробелов?
Предполагается использовать AkelPad.TextReplace().
Требуется замена зависящая от настроек "Параметры-Редактор 1->Размер табуляции" или именно "один-к-одному"? Если второе, то можно заменить так:
правда, начало строки не учитывается и замена будет производиться везде. Если требуется таки учитывать начало строки, то придется вводить функцию подсчета символов...
var hWndEdit= AkelPad.GetEditWnd()
do {
var v=AkelPad.TextFind(hWndEdit, "^\\t++<", 0x00280001);
if (v > -1)
AkelPad.TextReplace(hWndEdit, "\\t", " ", 0x00480001, true);
} while (v > -1);
Posted: Sat Jan 23, 2016 8:51 am
by Skif_off
YuS
Один символ табуляции на один символ пробела, только в начале строки. Считать - не вариант: строк может быть слишком много.
Если AkelPad.TextFind() и AkelPad.TextReplace
() работают как через GUI, нужно будет попробовать
В таком варианте придется скрипт запускать на каждое следующее совпадение... я там добавил hint, может такой вариант подойдёт...
Skif_off wrote:
А в тексте для поиска и замены слэши точно нужно удваивать? У меня так получается какая-то ерунда.
Хмм, сложно сказать, я у более опытных товарищей подсмотрел, что слеши удвоенные используются, но у меня и так работает, и эдак... т.е. подсказать как должно быть правильно, увы не могу.
Posted: Sat Jan 23, 2016 11:22 am
by Skif_off
YuS
Про hint не понял и да, неправ: долго и неудобно. Количество символов табуляции не бесконечное и не припомню, чтобы встречалось больше десятка - сделаю стопку правил или лучше в цикле, штук 15 итераций будет с запасом.
YuS wrote:
Skif_off wrote:
А в тексте для поиска и замены слэши точно нужно удваивать? У меня так получается какая-то ерунда.
Хмм, сложно сказать, я у более опытных товарищей подсмотрел, что слеши удвоенные используются, но у меня и так работает, и эдак... т.е. подсказать как должно быть правильно, увы не могу.
По идее надо удваивать, но у меня тогда не работает (вставляет, например, "\n" вместо переноса.
Может быть, просто и дубово, но зато быстро и надежно, а это главное. Скорость работы такого варианта должна быть значительно выше, чем цикла.
Posted: Wed Jan 27, 2016 10:08 pm
by Stranger
Подскажите, как в строке замены в скрипте с использованием AkelPad.TextReplace отделить обратную ссылку (\\1) от цифр последующего текста (в приведенном примере - 777)? Просто так не работает.