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

Печать (Ctrl+P)

Работа со строками в БСП 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));        // символ "_" 
Для Каждого Диапазон Из Диапазоны Цикл
    Если КодСимвола >= Диапазон.Мин И КодСимвола <= Диапазон.Макс Тогда
         Возврат Ложь;
     КонецЕсли; 
КонецЦикла; 
Возврат Истина;
 КонецФункции

См. также

Previous Article
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.