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

SeiOkami 558 5 15 15

Метод выделяет подстроку внутри подстроки с использованием метода см. СтрНайтиИВыделитьОформлением Платформенный метод СтрНайтиИВыделитьОформлением() находит только с начала слова Например, если искать "200", то в код элемента не будет выделен: "CNT-000**200**"

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

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

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

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

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

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

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

		Иначе

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

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

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

		КонецЕсли;
		
	КонецЦикла;

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

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

См. также

Строка выделенная оформлением

Как выделить слово внутри ячейки макета жирным шрифтом (курсивным)?

ИР Найти в списке

ИР Найти в окнах

НайтиСертификат (БСП)

Найти значение в строке

УдалитьПоследниеСимволыИзСтроки (БСП)

УстановитьУсловноеОформлениеДереваПодсистем (БСП)

Модератору