Разбить строку разделителями на подстроки и вернуть массив с ними в 1С
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Функция ПолучениеМассиваПодстрокИзСтрокиСРазделителем(Знач Стр, ЗнакРазделителя = ".", ОбрезатьНепечатныеСимволы = Ложь) Экспорт МассПодстрок = Новый Массив; Если ЗнакРазделителя = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,ЗнакРазделителя); Если Поз=0 Тогда МассПодстрок.Добавить(Стр); Возврат МассПодстрок; КонецЕсли; МассПодстрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(ЗнакРазделителя); Пока 1=1 Цикл Поз = Найти(Стр,ЗнакРазделителя); Если Поз=0 Тогда ФрагмСтр = Стр; Если ОбрезатьНепечатныеСимволы Тогда ФрагмСтр = СокрЛП(ФрагмСтр); КонецЕсли; МассПодстрок.Добавить(ФрагмСтр); Возврат МассПодстрок; КонецЕсли; ФрагмСтр = Лев(Стр,Поз-1); Если ОбрезатьНепечатныеСимволы Тогда ФрагмСтр = СокрЛП(ФрагмСтр); КонецЕсли; МассПодстрок.Добавить(ФрагмСтр); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; Возврат МассПодстрок; КонецФункции |
Получить строку с разделителями из массива подстрок в 1С
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Функция СобратьСтрокуСРазделителемИзМассива(НашМассив, НашРазделитель = ", ") Экспорт Результат = ""; Для Каждого Элемент Из НашМассив Цикл Результат = Результат + НашРазделитель + Строка(Элемент); КонецЦикла; Возврат Сред(Результат, СтрДлина(НашРазделитель) + 1); КонецФункции Получить первый фрагмент текста, отделяемый разделителем от строки в 1С Функция ПолучениеПервогоФрагмента(Строк, НашРазделитель = ".", ИспользГраницыЕслиМаркерНеНашли = Истина) Экспорт Позиц = Найти(Строк, НашРазделитель); Если Позиц > 0 Тогда Возврат Лев(Строк, Позиц - 1); Иначе Если ИспользГраницыЕслиМаркерНеНашли Тогда Возврат Строк; Иначе Возврат Строк; КонецЕсли; КонецЕсли; КонецФункции |
Получить последний фрагмент текста, отделяемый разделителем от строки в 1С
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Функция ПолучениеПоследнегоФрагмента(Строк, Марк = ".", ИспользГраницыЕслиМаркерНеНашли = Истина) Экспорт НашаПодстрока = Строк; МаркерНайден = Ложь; Пока Марк <> "" Цикл Позиц = Найти(НашаПодстрока, Марк); Если Позиц = 0 Тогда Прервать; КонецЕсли; МаркерНайден = Истина; НашаПодстрока = Сред(НашаПодстрока, Позиц + СтрДлина(Марк)); КонецЦикла; Если Истина И Не МаркерНайден И ИспользГраницыЕслиМаркерНеНашли Тогда Возврат Строк; ИначеЕсли МаркерНайден Тогда Возврат НашаПодстрока; Иначе Возврат ""; КонецЕсли; КонецФункции |
Получить подстроку находящуюся между маркерами в 1С
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Функция ПолучениеСтрокиМеждуМаркерами(Строк, НачМарк = Неопределено, КонечнМаркер = Неопределено, ИспользГраницыЕслиМаркерНеНашли = Истина, пЛиВключатьМаркеры = Ложь) Экспорт ПозНачМаркера = Найти(Строк, НачМарк); Если Истина И ПозНачМаркера = 0 И ИспользГраницыЕслиМаркерНеНашли = Ложь Тогда Возврат Неопределено; КонецЕсли; Если Ложь ИЛИ НачМарк = Неопределено ИЛИ ПозНачМаркера = 0 Тогда ПозНачМаркера = - СтрДлина(НачМарк); КонецЕсли; Стр = Сред(Строк, ПозНачМаркера + СтрДлина(НачМарк)); ПозКонечнМаркера = Найти(Стр, КонечнМаркер); Если Истина И ПозКонечнМаркера = 0 И ИспользГраницыЕслиМаркерНеНашли = Ложь Тогда Возврат Неопределено; КонецЕсли; Если Ложь ИЛИ КонечнМаркер = Неопределено ИЛИ ПозКонечнМаркера = 0 Тогда ПозКонечнМаркера = СтрДлина(Стр) + 1; КонецЕсли; Результат = Лев(Стр, ПозКонечнМаркера - 1); Если пЛиВключатьМаркеры Тогда Если НачМарк <> Неопределено Тогда Результат = НачМарк + Результат; КонецЕсли; Если КонечнМаркер <> Неопределено Тогда Результат = Результат + КонечнМаркер; КонецЕсли; КонецЕсли; Возврат Результат; КонецФункции |