Разбор строки Ключевые слова: рекурсия, парсер, разбор, строка
При анализе файлов приходится иногда осуществлять разбор строк, которые как правило состоят из поледовательности значений каких-либо полей, разделенных, например, запятыми.
Такая задача очень часто возникает при работе с логами СКУД-контроллеров. Возникает задача получить, например, значения 2-го, 5-го, 6-го поля в строке.
Для удобства решения задачи удобно преобразовывать строку в массив. Это можно сделать с помощью рекурсивной функции, так эта функция выглядит очень наглядно, красиво и лаконично.
Функция РазборСтроки(знач Стр, Массив, Разделитель)
Поз = Найти(Стр, Разделитель);
Если Поз = 0 тогда
Массив.Добавить(Стр);
возврат Массив;
иначе
Массив.Добавить(СокрЛП(Сред(Стр,1,Поз-1)));
возврат РазборСтроки(СокрЛП(Сред(Стр, Поз+1, СтрДлина(Стр)-Поз)), Массив, Разделитель);
конецЕсли;
конецФункции
....
ТекСтр = "Мама, мыла, раму, раму, мыла, мама,раму,мама, мыла";
Массивчик = новый Массив;
Массивчик = РазборСтроки(ТекСтр, Массивчик, ",");
Казалось бы, всё красиво и понятно, однако, даже искушенные программисты порой решают подобные задачи через цикл, порождая громоздкий и некрасивый код |