Страницы: 1
RSS
Полезности: Функция подсчета и "картографирования" цифровых групп в текстовой строке
 
Данная функция ищет вхождения цифровых групп в тексте, и:
- по своему имени возвращает True/False (есть или нет цифры в строке)
- в массиве возвращает первое вхождение группы и кол-во цифр в ней. Сколько групп цифр в строке, столько и пар вхождение/длина в массиве.
- отдельно возвращается кол-во групп цифр
- также отдельно возвращается позиция в массиве наибольшей (по кол-ву цифр) группы. Т.е. на указатель в массиве индекс первой цифры в строке.

Код и пример применения:
Скрытый текст
 
Пара вариантов оптимизаций:
Скрытый текст
Тестер:
Скрытый текст
Результаты:
Скрытый текст
Выводы:
1. Я опять занимаюсь фигней.
2. For-Next заметно шустрее Do-Loop
3. Надо придумать новый подход в плане алгоритма поиска цифровой начинки в строке.
-------------------------------------
Немного экзотики:
Скрытый текст
Результаты обновы еще грустнее:
Код
Функция       Дл.строки     Повторов      Прошло        Найдено
NumCount       51            1000000       7,961         4 
NumMap         51            1000000       8,914         4 
NumExArrT      51            1000000       12,469        4 
Изменено: Anchoret - 09.04.2018 21:49:29
 
Anchoret, а почему не RegExp'ом? Там и подсчёт вхождений есть и извлечение совпадений, и циклов на уровне VBA не требуется. Не говоря о гибкости: решение с Like разбухает от вложенной логики, как только мы станем искать что-то сложнее последовательных групп цифр.
 
Irregular Expression, на малых строках (до сотни знаков) RegExp медленнее работает. Тут именно на цифры в тексте идет охота) Для более серьезных поисков только RegExp.
Страницы: 1
Наверх