1С 8.3 БСП РазложитьСтрокуВМассивПодстрок
Данные > 1С 8.3 БСП > Строковые функции
Перейти в раздел примеры кода 1С 8.3:
1С 8.3 БСП РазложитьСтрокуВМассивПодстрок: разбивает строку на несколько строк по указанному разделителю. Разделитель может иметь любую длину. Если разделителем является строка из одного символа, и не используется параметр СокращатьНепечатаемыеСимволы, рекомендуется использовать функцию платформы СтрРазделить.
Примера кода №1
&НаКлиенте
Процедура ПримерИспользованияРазложитьСтрокуВМассивПодстрок(Команда)
МояСтрока = "Пушкин А.С.;г.Санкт-Петербург;Писатель;26.05.1799";
// Разделитель ";",
Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МояСтрока,";",Истина,Истина);
Сообщить(Результат[0]); //Пушкин А.С.
КонецПроцедуры
Процедура ПримерИспользованияРазложитьСтрокуВМассивПодстрок(Команда)
МояСтрока = "Пушкин А.С.;г.Санкт-Петербург;Писатель;26.05.1799";
// Разделитель ";",
Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(МояСтрока,";",Истина,Истина);
Сообщить(Результат[0]); //Пушкин А.С.
КонецПроцедуры
Примера кода от rayastar
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один,два");
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один, два",,,Истина);
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один два", " ");
// возвратит массив из 5 элементов, три из которых // пустые: "", "один", "", "два", "";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(";один;;два;", ";")
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один,два");
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один, два",,,Истина);
// возвратит массив из двух элементов: "один", "два";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("один два", " ");
// возвратит массив из 5 элементов, три из которых // пустые: "", "один", "", "два", "";
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(";один;;два;", ";")
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Функция БСП
Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено,
СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Если Разделитель = ","
И ПропускатьПустыеСтроки = Неопределено
И СокращатьНепечатаемыеСимволы Тогда
Результат = СтрРазделить(Значение, ",", Ложь);
Для Индекс = 0 По Результат.ВГраница() Цикл
Результат[Индекс] = СокрЛП(Результат[Индекс])
КонецЦикла;
Возврат Результат;
КонецЕсли;
Результат = Новый Массив;
// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Значение) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = СтрНайти(Значение, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Значение, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Подстрока));
Иначе
Результат.Добавить(Подстрока);
КонецЕсли;
КонецЕсли;
Значение = Сред(Значение, Позиция + СтрДлина(Разделитель));
Позиция = СтрНайти(Значение, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Значение) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Значение));
Иначе
Результат.Добавить(Значение);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
СокращатьНепечатаемыеСимволы = Ложь) Экспорт
Если Разделитель = ","
И ПропускатьПустыеСтроки = Неопределено
И СокращатьНепечатаемыеСимволы Тогда
Результат = СтрРазделить(Значение, ",", Ложь);
Для Индекс = 0 По Результат.ВГраница() Цикл
Результат[Индекс] = СокрЛП(Результат[Индекс])
КонецЦикла;
Возврат Результат;
КонецЕсли;
Результат = Новый Массив;
// Для обеспечения обратной совместимости.
Если ПропускатьПустыеСтроки = Неопределено Тогда
ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
Если ПустаяСтрока(Значение) Тогда
Если Разделитель = " " Тогда
Результат.Добавить("");
КонецЕсли;
Возврат Результат;
КонецЕсли;
КонецЕсли;
//
Позиция = СтрНайти(Значение, Разделитель);
Пока Позиция > 0 Цикл
Подстрока = Лев(Значение, Позиция - 1);
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Подстрока));
Иначе
Результат.Добавить(Подстрока);
КонецЕсли;
КонецЕсли;
Значение = Сред(Значение, Позиция + СтрДлина(Разделитель));
Позиция = СтрНайти(Значение, Разделитель);
КонецЦикла;
Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Значение) Тогда
Если СокращатьНепечатаемыеСимволы Тогда
Результат.Добавить(СокрЛП(Значение));
Иначе
Результат.Добавить(Значение);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Пример дежурной функции
Функция СтрРазделитьРасширенная(Строка, Разделитель = ",", ВключатьПустые = Истина,
СокращатьНепечатаемыеСимволы = Ложь, РазделительЕдинойСтрокой = Истина) Экспорт
// Часто при помощи СтрРазделить() можно сделать тоже самое, что и РазложитьСтрокуВМассивПодстрок().
// Тогда нужно применять платформенный метод. Но:
// Если нужно использовать разделитель, состоящий из строки, а не одного символа, берёмся за РазложитьСтрокуВМассивПодстрок()
// Если нужно, чтобы элементы результата были обработаны СокрЛП(), делаем это сами постобработкой (будет быстрее)
Если РазделительЕдинойСтрокой И СтрДлина(Разделитель) > 1 Тогда
Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(
Строка, Разделитель, НЕ ВключатьПустые, СокращатьНепечатаемыеСимволы);
Иначе
Результат = СтрРазделить(Строка, Разделитель, ВключатьПустые);
Если СокращатьНепечатаемыеСимволы Тогда
Для Индекс = 0 По Результат.Количество()-1 Цикл
Результат[Индекс] = СокрЛП(Результат[Индекс]);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
СокращатьНепечатаемыеСимволы = Ложь, РазделительЕдинойСтрокой = Истина) Экспорт
// Часто при помощи СтрРазделить() можно сделать тоже самое, что и РазложитьСтрокуВМассивПодстрок().
// Тогда нужно применять платформенный метод. Но:
// Если нужно использовать разделитель, состоящий из строки, а не одного символа, берёмся за РазложитьСтрокуВМассивПодстрок()
// Если нужно, чтобы элементы результата были обработаны СокрЛП(), делаем это сами постобработкой (будет быстрее)
Если РазделительЕдинойСтрокой И СтрДлина(Разделитель) > 1 Тогда
Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(
Строка, Разделитель, НЕ ВключатьПустые, СокращатьНепечатаемыеСимволы);
Иначе
Результат = СтрРазделить(Строка, Разделитель, ВключатьПустые);
Если СокращатьНепечатаемыеСимволы Тогда
Для Индекс = 0 По Результат.Количество()-1 Цикл
Результат[Индекс] = СокрЛП(Результат[Индекс]);
КонецЦикла;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник