Все способы разделить строку в массив подстрок в 1С 8

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

СтрРазделить()

Начиная с версии платформы 8.3.6 для разделения строки в массив можно воспользоваться стандартной функцией платформы :

СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)

Параметры:

Имя параметраТипОписание
<Строка> (обязательный)СтрокаВходная строка
<Разделитель> (обязательный)СтрокаСтрока символов, каждый из которых является индивидуальным разделителем.
<ВключатьПустые> (необязательный)БулевоУказывает необходимость включать в результат пустые строки, которые могут образоваться в результате разделения исходной строки.
Значение по умолчанию: Истина.

Возвращаемое значение — Тип Массив, Массив строк, которые получились в результате разделения входной строки

Если у вас разделитель это слово или набор символов, тогда эта функция вам не подойдет, используйте функция из БСП с аналогичными параметрами.

СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(<Строка>, <Разделитель>, <ПропускатьПустыеСтроки>);

Подробней о этой функции или о других функциях из БСП вы можете прочитать на портале ИТС

Разделение строк до версии 8.3.6

Если вы получили ошибку: Процедура или функция с указанным именем не определена (СтрРазделить), тогда этот совет поможет вам:

В конфигурациях на обычных формах, например УТ 10.3 строки можно разделить через функцию БСП

ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(<Строка>, <Разделитель>);

Своя функция для разделения строк

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

КонецФункции 

Если вы знаете более эффективный способ разделения строки, пожалуйста , напишите об этом в комментариях )

Подписаться
Уведомить о
guest
1 Комментарий
Популярные
Новые Старые
Межтекстовые Отзывы
Посмотреть все комментарии