РазложитьСтрокуПоискаВМассивСлов (БСП)

Автор: 1С
ОбщийМодуль.ВариантыОтчетовКлиентСервер
БСП

Разложить строку поиска массив слов. Превращает строку поиска в массив слов с уникальными значениями, отсортированный по убыванию длины.

// Превращает строку поиска в массив слов с уникальными значениями, отсортированный по убыванию длины.
Функция РазложитьСтрокуПоискаВМассивСлов(СтрокаПоиска) Экспорт
	СловаИИхДлина = Новый СписокЗначений;
	ДлинаСтроки = СтрДлина(СтрокаПоиска);
	
	Слово = "";
	ДлинаСлова = 0;
	ОткрытаКавычка = Ложь;
	Для НомерСимвола = 1 По ДлинаСтроки Цикл
		КодСимвола = КодСимвола(СтрокаПоиска, НомерСимвола);
		Если КодСимвола = 34 Тогда // 34 - двойная кавычка ".
			ОткрытаКавычка = Не ОткрытаКавычка;
		ИначеЕсли ОткрытаКавычка
			Или (КодСимвола >= 48 И КодСимвола <= 57) // цифры
			Или (КодСимвола >= 65 И КодСимвола <= 90) // латиница большие
			Или (КодСимвола >= 97 И КодСимвола <= 122) // латиница маленькие
			Или (КодСимвола >= 1040 И КодСимвола <= 1103) // кириллица
			Или КодСимвола = 95 Тогда // символ "_"
			Слово = Слово + Символ(КодСимвола);
			ДлинаСлова = ДлинаСлова + 1;
		ИначеЕсли Слово <> "" Тогда
			Если СловаИИхДлина.НайтиПоЗначению(Слово) = Неопределено Тогда
				СловаИИхДлина.Добавить(Слово, Формат(ДлинаСлова, "ЧЦ=3; ЧВН="));
			КонецЕсли;
			Слово = "";
			ДлинаСлова = 0;
		КонецЕсли;
	КонецЦикла;
	
	Если Слово <> "" И СловаИИхДлина.НайтиПоЗначению(Слово) = Неопределено Тогда
		СловаИИхДлина.Добавить(Слово, Формат(ДлинаСлова, "ЧЦ=3; ЧВН="));
	КонецЕсли;
	
	СловаИИхДлина.СортироватьПоПредставлению(НаправлениеСортировки.Убыв);
	
	Возврат СловаИИхДлина.ВыгрузитьЗначения();
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

Разложить строку в массив

РазложитьСтрокуВМассивСлов (БСП)

РазложитьСтрокуПоТочкамИСлэшам (БСП)

РазложитьСтрокуВМассивПодстрок (БСП)

Разложить массив по типам объектов

Выделение искомого слова в ТурбоПоиск

ОсуществитьПоискКонтактовПоСтроке (БСП)

СформироватьСтрокуДляПоискаВЗапросе (БСП)

Значение строки поиска динамического списка

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз