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