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