Разложить Строку В Массив Слов
Работа со строками в БСП 3.0
Общий модуль СтроковыеФункцииКлиентСервер
Функции и процедуры общего назначения для работы со строками в БСП 3.0 находятся в общем модуле СтроковыеФункцииКлиентСервер. Для разложения строку в массив слов используется следующий вызов:
МассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов( Значение , РазделителиСлов;
Данная функция используется в модуле управления электронной почты и ее назначение – это разбивать строку на несколько строк, используя заданный набор разделителей.
Если параметр РазделителиСлов не задан, то разделителем слов считается любой из символов, не относящихся к символам латиницы, кириллицы, цифры, подчеркивания.
Параметры:
Значение – Строка – исходная строка, которую необходимо разложить на слова.
РазделителиСлов – Строка – перечень символов-разделителей. Например, “.,;”.
Возвращаемое значение:
Массив – список слов.
Пример:
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три"); // возвратит массив значений: "один", "два2_", "три"; СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов("один-@#два2_!три", "#@!_"); // возвратит массив значений: "один-", "два2", "три".
Прграммный код функции:
Функция РазложитьСтрокуВМассивСлов(Знач Значение, РазделителиСлов = Неопределено) ЭкспортСлова = Новый Массив;
РазмерТекста = СтрДлина(Значение);
НачалоСлова = 1;
Для Позиция = 1 По РазмерТекста Цикл
КодСимвола = КодСимвола(Значение, Позиция);
Если ЭтоРазделительСлов(КодСимвола, РазделителиСлов) Тогда
Если Позиция <> НачалоСлова Тогда
Слова.Добавить(Сред(Значение, НачалоСлова, Позиция - НачалоСлова));
КонецЕсли;
НачалоСлова = Позиция + 1;
КонецЕсли;
КонецЦикла;
Если Позиция <> НачалоСлова Тогда
Слова.Добавить(Сред(Значение, НачалоСлова, Позиция - НачалоСлова)); КонецЕсли;
Возврат Слова;
КонецФункции Функция ЭтоРазделительСлов(КодСимвола, РазделителиСлов = Неопределено) ЭкспортЕсли РазделителиСлов <> Неопределено Тогда
Возврат СтрНайти(РазделителиСлов, Символ(КодСимвола)) > 0;
КонецЕсли;
Диапазоны = Новый Массив;
Диапазоны.Добавить(Новый Структура("Мин,Макс", 48, 57)); // цифры
Диапазоны.Добавить(Новый Структура("Мин,Макс", 65, 90));
// латиница большие Диапазоны.
Добавить(Новый Структура("Мин,Макс", 97, 122)); // латиница маленькие Диапазоны.
Добавить(Новый Структура("Мин,Макс", 1040, 1103)); // кириллица Диапазоны.
Добавить(Новый Структура("Мин,Макс", 1025, 1025)); // символ "Ё" Диапазоны.
Добавить(Новый Структура("Мин,Макс", 1105, 1105)); // символ "ё" Диапазоны.
Добавить(Новый Структура("Мин,Макс", 95, 95)); // символ "_"
Для Каждого Диапазон Из Диапазоны Цикл
Если КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
КонецФункции
См. также