1с массив в строку с разделителями

Программирование системы 02.06.2016 15:17 12279

В новых версиях платформы 1С:Предприятие 8.3 существует функция встроенного языка СтрРазделить(), для разделения строки на подстроки по разделителю. Данная функция реализована в платформе 8.3.6.1977. В более ранних версиях платформы данная функция не поддерживается.

В типовых конфигурациях в общих модулях можно найти готовые функции для разделения строки. Общий модуль может называться «ОбщегоНазначения» а функция РазложитьСтрокуВМассивПодстрок().
Если нет возможности воспользоваться встроенной функций 1С языка или функцией общего модуля, то необходимо писать собственные механизмы для разделения на подстроки.

Функция РазложитьСтрокуНаПодстроки()

Строку можно разделить на подстроки, превратив ее в многострочную строку и воспользовавшись специальными функциями встроенного языка. Функция на вход принимает строку, разделяет её по разделителю и возвращает массив подстрок.

Пример
ВходящаяСтрока — «1подстрока,2подстрока,3подстрока»
Разделитель — «,»
Результат — Массив(0=>»1подстрока», 1=>»2подстрока», 2=>»3подстрока»)

Также для поиска подстрок можно воспользоваться регулярными выражениями. Регулярные выражения в 1С:Предприятии реализуются с помощью COM-объектов. Благодаря этой технологии можно осуществлять поиск и замену подстрок по регулярному выражению.

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Данные функции позволяют разложить строку в массив, используя заданный разделитель
Например есть строка: абв$dfd$232$-0oj$5
Выполнив код: НашМассив = РазложитьСтрокуВМассив(абв$dfd$232$-0oj$5, «$») ;
Получим: НашМассив = абв
dfd
232
-0oj
5
Код 1C v 8.х

Пример с использованием предустановленной библиотеки RegExp, т.е. она есть в любом windows.
Плюсы RegExp:
1. Хорошая скорость анализа, т.к. 1С анализ строк (разбор) обычно реализуется циклами и функциями: Лев, Прав, Сред, Найти, а встроенный язык медленный
2. Высокая читаемость и модифицированность (более предсказуем в случае несоответствия строки — разбору)
3. Дополнительный функционал (можно осуществлять анализ, замену и проверку строковых выражений)

Минусы RegExp:
1. Не все задачи можно решить (например рекурсивные разборы тип 1 + (2+3*(2-7)) в случае если нужно разобрать на выражения в скобках) приходится смешивать с кодом.
2. Возможность зависания при использовании сложных шаблонов(редкость, но бывает).
3. RegExp — это дополнительная библиотека и инициализация занимает значительное время.

Похожие FAQ

Еще в этой же категории

Ключевые слова и Изображения

Слова упорядочены по частоте использования в тексте

Изображения

vilnev 05.08.2016 15:46
Комментарий: 2
vilnev 05.08.2016 15:42
Комментарий: 1

Добавлю свои 5 копеек.

Более лаконичный способ разложить строку в массив.

Функция РазложитьСтрокуВМассив(ИсхСтрока, Разделитель =»,») ВремМногострочнТекст = СтрЗаменить(ИсхСтрока, Разделитель, Символы.ПС); МассивСтрок = Новый Массив(); Для Счетчик = 1 По СтрЧислоСтрок(ВремМногострочнТекст) Цикл МассивСтрок.Добавить(СтрПолучитьСтроку(ВремМногострочнТекст, Счетчик)); КонецЦикла; Возврат МассивСтрок;КонецФункции

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: