1С: Поиск слова обрамлённого символами
В продолжение этого. Пользователи оказались немножко более изобретательными, чем предполагал программист, и начали в комментариях писать и что-то типа:
Контролер процесса {Коновалова Е.П.} очень хочет получить премию в размере (20 рублей)!
Соответственно описанная в предыдущей статье функция начала определять только «20 рублей». Т.е. алгоритм не предусматривал наличие нескольких вложений скобок внутри строки. Поправим это:
Функция СложитьМассивы(массив1,массив2) экспорт
для каждого эл из массив2 цикл
массив1.добавить(эл);
конеццикла;
возврат массив1;
конецфункции
Функция ВычленитьМассивФИОИзСкобок(стр,стрн,стрк) экспорт
МассивФИО=Новый Массив();
// сначала вычленяем из ()
массивКонцовСкобки=СтрРазделить(стр,стрк);
для каждого эл из массивКонцовСкобки цикл
если СтрНайти(эл,стрн)>0 тогда
МассивНачалСкобки=СтрРазделить(эл,стрн);
если СокрЛП(МассивНачалСкобки[1])<>"" тогда
МассивФИО.Добавить(СокрЛП(МассивНачалСкобки[1]));
конецесли;
конецесли;
конеццикла;
возврат МассивФИО;
конецфункции
контролеры=ВычленитьМассивФИОИзСкобок(body.message,"(",")");
контролеры=СложитьМассивы(контролеры,ВычленитьМассивФИОИзСкобок(body.message,"{","}"));
контролеры=СложитьМассивы(контролеры,ВычленитьМассивФИОИзСкобок(body.message,"<",">"));
контролеры=СложитьМассивы(контролеры,ВычленитьМассивФИОИзСкобок(body.message,"[","]"));
В результате в переменную попадает массив слов заключенных в скобки