Книга знаний

1С:Предприятие / Приемы программирования / Встроенный язык

Разбор строки

Решение тривиальной задачи - разбор строкиАвтор статьи:
Последняя редакция №1 от 22.09.07
URL: http://kb.mista.ru/article.php?id=592

Ключевые слова: рекурсия, парсер, разбор, строка


При анализе файлов приходится иногда осуществлять разбор строк, которые как правило состоят из поледовательности значений каких-либо полей, разделенных, например, запятыми.

Такая задача очень часто возникает при работе с логами СКУД-контроллеров. Возникает задача получить, например, значения 2-го, 5-го, 6-го поля в строке.

Для удобства решения задачи удобно преобразовывать строку в массив. Это можно сделать с помощью рекурсивной функции, так эта функция выглядит очень наглядно, красиво и лаконично.

Функция РазборСтроки(знач Стр, Массив, Разделитель)
    Поз = Найти(Стр, Разделитель);
    Если Поз = 0 тогда
        Массив.Добавить(Стр);
        возврат Массив;
    иначе
        Массив.Добавить(СокрЛП(Сред(Стр,1,Поз-1)));
        возврат РазборСтроки(СокрЛП(Сред(Стр, Поз+1, СтрДлина(Стр)-Поз)), Массив, Разделитель);
    конецЕсли;
конецФункции

....

ТекСтр = "Мама, мыла, раму,    раму, мыла,     мама,раму,мама, мыла";
Массивчик = новый Массив;
Массивчик = РазборСтроки(ТекСтр, Массивчик, ",");


Казалось бы, всё красиво и понятно, однако, даже искушенные программисты порой решают подобные задачи через цикл, порождая громоздкий и некрасивый код

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика