1С 8.3 Найти и выделить оформлением строку - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Найти и выделить оформлением строку

Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Найти и выделить оформлением строку в 1С 8.3:
// Метод выделяет подстроку внутри подстроки с использованием метода см. СтрНайтиИВыделитьОформлением
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/3
//
// Параметры:
//  Строка - Строка - Исходная строка
//  Подстрока - Строка - Искомая строка
//
// Возвращаемое значение:
//  ФорматированнаяСтрока, Неопределено - вернет форматированную строку, если хотя бы одно вхождение найдено
Функция СтрокаНайтиИВыделитьОформлением(Знач Строка, Знач Подстрока) Экспорт

   СтрокаВрег = ВРег(Строка);
   ПодстрокаВрег = ВРег(Подстрока);

   ДлинаСтроки = СтрДлина(Строка);
   ДлинаПодстроки = СтрДлина(Подстрока);

   ЧастиРезультата = Новый Массив; // Массив из Строка, ФорматированнаяСтрока

   НачалоПоиска = 1;
   Пока НачалоПоиска <= ДлинаСтроки Цикл

       ТекущаяКоордината = СтрНайти(СтрокаВрег, ПодстрокаВрег, , НачалоПоиска);
       Если ТекущаяКоордината = 0 Тогда

           Если ЗначениеЗаполнено(ЧастиРезультата) Тогда
               ЧастьСтроки = Сред(Строка, НачалоПоиска);
               ЧастиРезультата.Добавить(ЧастьСтроки);
               Прервать;
           Иначе
               Возврат Неопределено;
           КонецЕсли;

       Иначе

           Если НачалоПоиска < ТекущаяКоордината Тогда
               ЧастьСтроки = Сред(Строка, НачалоПоиска, ТекущаяКоордината - НачалоПоиска);
               ЧастиРезультата.Добавить(ЧастьСтроки);
           КонецЕсли;

           ЧастьСтроки = Сред(Строка, ТекущаяКоордината, ДлинаПодстроки);
           ЧастьСтроки = СтрНайтиИВыделитьОформлением(ЧастьСтроки, Подстрока);
           ЧастиРезультата.Добавить(ЧастьСтроки);

           НачалоПоиска = ТекущаяКоордината + ДлинаПодстроки;

       КонецЕсли;

   КонецЦикла;

   Возврат Новый ФорматированнаяСтрока(ЧастиРезультата);

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

// MIT License
// Copyright (c) 2024 SeiOkami
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
// (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 05.08.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому