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