Книга знаний

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

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

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

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


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

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

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

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

....

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


Позволяет разбирать строки, где в качестве разделителя - табуляция.

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

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

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