Далее, кусочек "f.lines = AkelPad.ReadFile("D:\\names.txt").split(/\r\n?|\n\r?/);" должен быть переписан под Ваш файл. Infocatcher вероятно не понял формат файла(или я?).
Искать что:alt="(\d+)[^"]+"
Чем:
Code: Select all
var g = arguments.callee; if(typeof(g.lines)=="undefined"){g.lines={};var arr=AkelPad.ReadFile("c:\\pattern.txt").split(/\r\n?|\n\r?/);for(var ind in arr){var str=arr[ind];if(!str) continue;var sind = str.indexOf(' ');g.lines[str.substring(0,sind)]=str.substring(sind+1).replace(/^\s*/,'').replace(/\s*$/,'');}}return 'alt="'+g.lines[$1]+'"';
Установить птички "Регулярные" "Заменить функцией"
Пояснение:
Ищутся все вхождения alt="123abс",любой не пустой набор цифр(за это отвечает (\d+)), abс - любые знаки до кавычки(за это отвечает [^"]+ , если нужны вхождения конкретных вхождений - замените на своё).
Далее по "Чем":
Кусочек до "return 'alt=...." отвечает за загрузку таблицы соответствия найденному числу подставляемой строке. Каждая строка указанного файла парсится построчно(пустые пропускаются, строка из одних пробелов не считается пустой!) по шаблону "число подстановка". До числа не должно быть пробела, между "числом"и "подстановкой" минимум 1 пробел(больше проигнорируются), и после "подставноки" пробелы игнорируются. Полученные пары "число" подстановка сохраняются в списке lines.
Кусочек "return 'alt=...." и до конца отвечает собственно за вставку. Найденный набор цифр ищется в списке lines, подстановка обрамляется alt=" " и собственно происходит замена.
Что будет если найдется последовательность цифр, которой нету в списке подстановок? Вместо подстановки появится слово undefined.
Если будете пользоваться "Заменить всё", то файл подстановок прочитается один раз, если через "Заменить" - каждый раз будет читаться. Учтите это, если файл подстановок очень большой будет заметный лаг.
Конечно можно было бы больше проверок вставить, но писать тяжело, и думаю Вам этого хватит.(вот бы окно кода пре-инициализации сюда, куда подготовку к замене внести можно было бы....)