Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Ошибка при использовании \n в RE
-
У меня есть файл с данными
Prefix_Local: ---- Prefix_Global: привет пока Prefix_Global_delimiter: ----Этот файл я читаю в переменную MESSAGES_PREFIX и мне нужно получить текст
привет покаПолучить я его должен используя
Prefix_Global:\n([\S\s]+?)\n\sТ.к. каким-то чудом \n в BAS работает только, если прогнать текст через функцию "Шаблон", расположенную в "Инструменты" и уже после прогнать полученную переменную через "Первое вхождение", то я так и делаю

И по идее всё должно работать, но... В "Шаблон" я указал не цельный текст, а переменную [[MESSAGES_PREFIX]]...
Если в "Шаблон" указать переменную, а не цельный текст, тогда "Первое вхождение" выдаст результат ""

И мне нужно понять, почему он получает в переменную A2 "", а непривет покаКак лично я понял, что если грузить в "Шаблон" переменную, то он получает такую-же переменную, как MESSAGES_PREFIX и \n также не работает в RE.
-
Хоть кто-то знает в чём проблема или другой способ получить желаемый результат, но при этом без "порнухи"?
-
@ftyhp said in Ошибка при использовании \n в RE:
Для лучшего понимания проблемы и того, что мне нужно
В "Шаблон" вписываю текст(Работает)
True.xmlВ вашем текстовом файле для переноса строки используется возврат каретки с переводом строки:
\r= CR (возврат каретки) → используется в качестве символа новой строки в Mac OS перед X
\n= LF (перевод строки) → используется в качестве нового символа строки в Unix/Mac OS X
\r\n= CR + LF → используется в качестве символа новой строки в Windows
Вашу регулярку можно немного изменить, что бы она работала и с возвратом каретки:
Prefix_Global:\r?\n([\S\s]+?)\r?\n\s
Тестовый скрипт: 1489.xml
В "Шаблон" вписываю переменную(получаю ""). Нужно указать путь к text.txt перед запуском!
False.xml
text.txtВы не сохранили проект прежде чем отправить его на форум, в результате на форум вы выгрузили пустой скрипт:

-
@ftyhp said in Ошибка при использовании \n в RE:
@Fox Благодарю. И использования шаблона не нужно с
Prefix_Global:\r?\n([\S\s]+?)\r?\n\sЕсли посмотрите код действия "шаблон", то увидите, что перенос строки он устанавливает без возврата каретки (только
\n). По этому ваша регулярка с ним работала.Изменённая мною регулярка будет работать с текстом и с возвратом каретки и без неё (и с
\r\nи с\n)