Вниз
Скачать: CL | DM;

Нужна функция поиска и замены   Найти похожие ветки 

← →
SergP ©   (2004-07-10 21:11) [0]

Нужна функция поиска и замены без учета регистра.

Я писал нечто с использованием AnsiUpperCase, pos, delete, insert
но этот вариант мне не нравится, так как функция должна работать как можно быстрее (обрабатываются большие строки с большим кол-вом замен)

Может кто что-нить может предложить толковое? Типа может есть стандартные функции для этого, или может кто сам писал?


← →
Огромное Кулясищще ©   (2004-07-10 21:19) [1]

Может FastStrings подойдёт


← →
SergP ©   (2004-07-10 21:31) [2]


> Может FastStrings подойдёт


Где это есть?


← →
AD_infiniTUM   (2004-07-10 21:43) [3]

В D7 (незнаю как D6), в SysUtils есть функция StringReplace, четвертым параметром можно установить флаг, чтобы не учитывался регистр. Но мне почему-то не получилось заставить ее работать (Delphi ругается на этот черветый параметр, не понял что он хочет).


← →
SergP ©   (2004-07-10 22:00) [4]


>  [3] AD_infiniTUM   (10.07.04 21:43)


Спасибо. В D6 она есть в SysUtils.
Проверил, Все работает...


← →
MBo ©   (2004-07-11 12:11) [5]

Если объемы велики и быстродействие существенно
(судя по >так как функция должна работать как можно быстрее ), то воспользуйся QStrings или упомянутой FastStrings (нетрудно найти поиском в инете)


← →
SergP ©   (2004-07-11 12:59) [6]


>  [5] MBo ©   (11.07.04 12:11)

Закачал FastStrings

А кто-нить может сказать насколько функции этой библиотеки эффективнее стандартных?


← →
SergP ©   (2004-07-11 13:04) [7]

Хм... На ихнем сайте нашел:

FastStrings
FREE: A useful set of assembly optimised string manipulation routines. The most remarkable of these is without a doubt the FastReplace function. StringReplace took over 8 hours to complete multiple replacements on a 10mb string, whereas FastReplace took 0.5 seconds (yes, half of a second).

Что-то не верится. 8 часов и пол-секунды....???


← →
MBo ©   (2004-07-11 13:25) [8]

>SergP
На ОЧЕНЬ длинных строках Pos, а особенно StringReplace работают действительно медленно. Насколько это скажется в твоих обтоятельствах- не знаю.
сюда еще загляни.
http://dennishomepage.gugs-cats.dk/FastCodeProject.htm


← →
Igorek ©   (2004-07-11 15:38) [9]


> StringReplace took over 8 hours to complete multiple replacements
> on a 10mb string, whereas FastReplace took 0.5 seconds (yes,
> half of a second).
>
> Что-то не верится. 8 часов и пол-секунды....???

Очень может быть.
- тестировалось на ОЧЕНЬ быстром процессоре
- алгоритм StringReplace превысил обьем оперативки и из-за свопирования оно еле ползло
- пример для тестирования был оптимизирован для FastReplace :-)))


← →
KilkennyCat ©   (2004-07-11 15:54) [10]


> Igorek ©   (11.07.04 15:38) [9]


Думаю, что тестировалось на одном и том же процессоре, на одном и том же примере.


← →
MBo ©   (2004-07-11 16:01) [11]

>Igorek ©   (11.07.04 15:38) [9]
Достаточно посмотреть в исходниках, как сделана StringReplace - c использованием сложения новой строки из кусков - при множествнных заменах - это многократное выделение памяти.


← →
Igorek ©   (2004-07-11 16:43) [12]


> Думаю, что тестировалось на одном и том же процессоре, на
> одном и том же примере.

Кстати неочевидно. Для демонстрации преимуществ они могли для FastString дать даже хуже процессор и пример. Хотя обычно так не делают.


> MBo ©   (11.07.04 16:01) [11]
> >Igorek ©   (11.07.04 15:38) [9]
> Достаточно посмотреть в исходниках, как сделана StringReplace
> - c использованием сложения новой строки из кусков - при
> множествнных заменах - это многократное выделение памяти.

Понятно. Тормозило на динамическом выделении памяти как я понимаю. Но для полного анализа надо также исходники FastString.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
1-1089621067
denis24
2004-07-12 12:31
2004.07.25
Процедура генерации случ строки.


1-1089238481
Zvr@b
2004-07-08 02:14
2004.07.25
Как задать диапазон для Random?


1-1089378089
MadGhost
2004-07-09 17:01
2004.07.25
Как прикрутить справку *.hlp к приложению


8-1080585329
Mr Duda
2004-03-29 22:35
2004.07.25
Как вывести амплитуду wav? help help help


1-1089640336
sergeii
2004-07-12 17:52
2004.07.25
Округление чисел




   Наверх