|
Платные хостинги
Раскрутка сайта
Книги по программированию
Как заменить в строке S все вхождения....., ----------------
- Привет Всем!У меня возникла одна проблема.Мне нужно заменить в строке S все вхождения строки S1 на строку S2К примеру так replace('abcddddabcdmmmmabcd','abcd','dcba');А вот и мой код:function replace(s,p1,p2:string):string;var i,l1,l2:integer;begin l1:=length(p1); l2:=length(s);repeat i:=ansipos(p1,s); if i=0 then break; s:=copy(s,1,i-1)+p2+copy(s,i+l1,l2);until i=0;replace:=s;end;Она хорошо работает, но есть одно НО, она шикарно тормозит, особенноесли строка больше 30Kb, а если строка больше 400КВ, то комп ващевиснит.Помогите плз оптимизировать.Заранее спасибо.
- Уж не знаю, на скоко это оптимизирует... но ИМХО, сморится лучше...function replace(s, p1,p2:String):string;var i, l1, l2:integer;Begin l1:=length(p1); l2:=length(s); for i := 1 to (l2-l1)+1 do begin if (CompareMem(@s[i], @p1[1], l1)) then CopyMemory(@s[i], @p2[1], l1); end; replace:=s;end;
- А зачем? Если есть стандартная функция StringReplace?
- да..
- Всегда интересней изобрести свое колесо...а) из-за незнания, что колесо уже изобретено...б) нужно колесо определенной формы (под конкретную задачу, а не универсальное)в) процесс изобретения колеса приносит наслаждение, а также добавляет опыт по изобретению колес.
- Baa, ты прав! Мне доставляет большое удовольствие изобретение колёс.На самом деле я просто не знал, что такая фун-я существует. Точнее Яискал её, но не нашёл! У меня просто нет справочника по фун-ям Спасибо всем за участие!
- :-)))Ну-ну, не хотите на колесо посмотреть: http://pascal.sources.ru/cgi-bin....2014812
- http://delphi.mastak.ru/cgi-bin....265&n=2 - да... фишка сильная...
- да изврат, а можно было проще пребрать на ассемблере и памяти меньше и скорость больше
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|