1С 8.x : Функция разбора (разложения) строки в массив
Данные функции позволяют разложить строку в массив, используя заданный разделитель
Например есть строка: абв$dfd$232$-0oj$5
Выполнив код: НашМассив = РазложитьСтрокуВМассив(абв$dfd$232$-0oj$5, "$") ;
Получим: НашМассив = абв
dfd
232
-0oj
5
Пример с использованием предустановленной библиотеки RegExp, т.е. она есть в любом windows.
Плюсы RegExp:
1. Хорошая скорость анализа, т.к. 1С анализ строк (разбор) обычно реализуется циклами и функциями: Лев, Прав, Сред, Найти, а встроенный язык медленный
2. Высокая читаемость и модифицированность (более предсказуем в случае несоответствия строки - разбору)
3. Дополнительный функционал (можно осуществлять анализ, замену и проверку строковых выражений)
Минусы RegExp:
1. Не все задачи можно решить (например рекурсивные разборы тип 1 + (2+3*(2-7)) в случае если нужно разобрать на выражения в скобках) приходится смешивать с кодом.
2. Возможность зависания при использовании сложных шаблонов(редкость, но бывает).
3. RegExp - это дополнительная библиотека и инициализация занимает значительное время.
Выбор оптимального алгоритма для разбора строки в массив 0 Столкнулся с проблемой: ПолучитьСтрокуПоНомеру() медленно отрабатывает на входных данных 100 000 строк. Как сделать бытсрее?
// Пример Defender aka LINN
ВремяНачала = ТекущаяДата();
Сообщить(" Обработка начата: " + ВремяНачала);
...Использование регулярных выражений (RegExp) в 1С 1 Регулярные выражения (Regular Expressions) являются известным и мощным средством для поиска, тестирования и замены подстрок. Эта технология доступна и в 1С - через объект VBScript.RegExp. Нужный объект уже встроен в современные версии...Как мы писали парсер сайта с ценами для 1С 1 Недавно, мой постоянный клиент решил проводить маркетинговые исследования по изменению цен на товары у конкурентов... и эти данные захотел использовать в 1С в связке с его прайс-листом + куча отчетов с графиками и...Как напечатать документ на определенном принтере из сеанса RDP (Терминал) 3 В 1С есть возможность обратиться к принтеру по имени перед печатью, однако при работе через терминал к названию принтера добавляется (перенаправлено N), где N постоянно меняется. Решение следующее:
НаКлиенте
Функция...Как проверить наличие русских букв в строке? 0 //рег=СоздатьОбъект(" VBScript.RegExp" ); // Для 7.7
Рег = Новый COMОбъект(" VBScript.RegExp" );
Рег.global=-1;
Рег.ignorecase=-1;
Рег.pattern=" " ;
Сообщить(Рег.test(" есть русские bukovy" ));
Сообщить(Рег.test(" netu russ bukov" )); Посмотреть все результаты поиска похожих
Как узнать является ли строка числом? 10
// Если передено число - то 1, иначе 0
Функция ЭтоЧисло(Знач ТекСтр)
ТекСтр = СокрЛП(ТекСтр);
ТекСтр = СтрЗаменить(ТекСтр," 0" ," 9" );
Если (СтрДлина(Число(ТекСтр)) СтрДлина(ТекСтр))
или ((СтрДлина(ТекСтр) = 1) и (Найти(" 0123456789"...Функция получить строку на латинском, Транслит 9 Функция Транслит(Вход)
Коды = Новый Соответствие;
Коды.Вставить(" е" ," yo" );
Коды.Вставить(" Ё" ," Yo" );
Нач = КодСимвола(" А" );
Англ = " A" " B" " V" " G" " D" " E" " Zh" " Z" " I" " Y" " K" " L" " M" " N" " O" " P" " R" Как удалить символ кавычки " в строке? 6 // СтрокаСКавычками = " Alena" " Egorova"
СтрокаБезКавычки = СтрЗаменить(СтрокаСКавычками," " " " ," " );
Сообщить(СтрокаБезКавычки); // Alena Egorova
Номер символа Кавычка - 34 , и:
Симв(34) + МоеСлово + Симв(34) = " МоеСлово" Как убрать из строки лишние символы? 2 Функция УбратьЛишниеСимволы(Строка1) Экспорт
НовСтрока = " " ;
ПравильныеСимволы = " QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnmЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮйцукенгшщзхъфывапролджэячсмитьбю" ;
Для Сч = 1 по СтрДлина(Строка1)...Как обрезать строку до заданой длины или дополнить ее символами, если длина ее меньше заданой? 1 // Функция Дополняет переданную в качестве первого параметра строку символами слева справа до заданной длины и возвращает ее
// Незначащие символы слева и справа удаляются
// По умолчанию функция добавляет строку...Посмотреть все в категории Работа с Текстом (Строкой)
Более лаконичный способ разложить строку в массив.
Код 1с82:
Функция РазложитьСтрокуВМассив(ИсхСтрока, Разделитель =",") ВремМногострочнТекст = СтрЗаменить(ИсхСтрока, Разделитель, Символы.ПС); МассивСтрок = Новый Массив(); Для Счетчик = 1 По СтрЧислоСтрок(ВремМногострочнТекст) Цикл МассивСтрок.Добавить(СтрПолучитьСтроку(ВремМногострочнТекст, Счетчик)); КонецЦикла; Возврат МассивСтрок;КонецФункции