|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.02.2013, 07:45 | #1 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 776
|
Как узнать, сколько в тексте пробелов
Допустим макрос нашёл нужный текст в документе.
Как правильнее проанализировать этот текст на количество пробелов? Есть три варианта: Replace; Split; Цикл + InStr. Если найден большой фрагмент документа, например, в 1000 символов, то ведь функция Replace создаст в оперативной памяти компьютера новую строку, состоящую из 1000 символов, но без пробелов: Len(Replace(Текст, " ", "")) "Split" можно так использовать: UBound(Split(Текст, " ", 14)) 14 позволяет создавать небольшой массив, что ускорит работу кода, чем создавать массив на основе всех пробелов. Мне кажется, что самое оптимальное - это Цикл + InStr, но это надо усложнять код: добавлять лишний цикл, дополнительные переменные делать. Кто и что думает? |
10.02.2013, 10:16 | #2 | ||
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Я всегда пользуюсь Replace, поскольку самый явный способ. 1000 символов это получается 2кб. Это много?
Проверил на практике: Для Replace: Цитата:
Цитата:
Код:
Лучше день потерять — потом за пять минут долететь!©
Последний раз редактировалось viter.alex; 10.02.2013 в 14:22. |
||
10.02.2013, 13:31 | #3 | |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
1000 символов - это небольшой фрагмент
Цитата:
Код:
Тишина – самый громкий звук
|
|
10.02.2013, 13:35 | #4 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Если время критично, то, конечно, не следует преобразовывать строку - ни в массив, ни в другую строку без пробелов.
Можно сравнивать каждый символ строки с пробелом. Через Mid$(s,i,1)=" " это долго, лучше копировать двоичное содержимое символа в переменную типа Integer и сравнивать с константой того же типа: Код:
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
10.02.2013, 17:27 | #5 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
влом писать, но осмелюсь предположить, что вариант предложенный мной будет работать еще быстрей, т.к. там есть параметр maxCount, достигнув которого можно перестать считать и выйти
+ никаких внешних функций только я там затупил, ф-я должна возвращать кол-во пробелов
Тишина – самый громкий звук
Последний раз редактировалось nerv; 10.02.2013 в 17:30. |
10.02.2013, 23:37 | #6 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Мне кажется, что самое оптимальное - это Цикл + InStr, но это надо усложнять код: добавлять лишний цикл, дополнительные переменные делать.
Да, это быстрее. И совсем не сложно Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
11.02.2013, 00:50 | #7 | |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
Цитата:
Код:
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
|
11.02.2013, 09:47 | #8 |
Форумчанин
Регистрация: 29.09.2008
Сообщений: 378
|
Как раз хотел напомнить о ComputeStatistics. А зачем новый документ? Можно прямо на колене:
Код:
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
|
11.02.2013, 10:57 | #9 |
Старожил
Регистрация: 24.01.2011
Сообщений: 3,043
|
всё гениальное просто!!!!!!!!!
|
11.02.2013, 11:22 | #10 |
Старожил
Регистрация: 24.01.2011
Сообщений: 3,043
|
скажите я правильно закомментировал
Код:
Последний раз редактировалось Ципихович Эндрю; 11.02.2013 в 21:09. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как узнать сколько строк вывелось в DBGrid? | Женя32 | БД в Delphi | 4 | 15.01.2013 22:46 |
Как узнать сколько раз просматривался файл | vovanblch | Безопасность, Шифрование | 15 | 02.05.2011 01:15 |
как узнать сколько кликов было по кнопке . | s1s1s1 | Общие вопросы Delphi | 5 | 13.02.2011 22:47 |
[PHP] Как узнать сколько прошло времени? | RESPECT8 | PHP | 1 | 24.10.2010 09:43 |
замена пробелов в тексте | designer999 | Общие вопросы Delphi | 13 | 25.02.2010 16:50 |