1С 8.3 Найти и выделить оформлением строку
Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Перейти в раздел примеры кода 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.
// Источник: 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
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник