| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как заменить в строке S все вхождения..... |
| Автор: Frikazoid 8.1.2003, 22:43 |
| Привет Всем! У меня возникла одна проблема. Мне нужно заменить в строке 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КВ, то комп ваще виснит. Помогите плз оптимизировать. Заранее спасибо. |
| Автор: Baa 8.1.2003, 23:36 |
| Уж не знаю, на скоко это оптимизирует... но ИМХО, сморится лучше... 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; |
| Автор: Vit 9.1.2003, 02:07 |
| А зачем? Если есть стандартная функция StringReplace? |
| Автор: Song 9.1.2003, 04:51 |
| Автор: Baa 10.1.2003, 21:59 | ||
Всегда интересней изобрести свое колесо... а) из-за незнания, что колесо уже изобретено... б) нужно колесо определенной формы (под конкретную задачу, а не универсальное) в) процесс изобретения колеса приносит наслаждение, а также добавляет опыт по изобретению колес. |
| Автор: Frikazoid 10.1.2003, 23:01 |
| Baa, ты прав! Мне доставляет большое удовольствие изобретение колёс. На самом деле я просто не знал, что такая фун-я существует. Точнее Я искал её, но не нашёл! У меня просто нет справочника по фун-ям Спасибо всем за участие! |
| Автор: Song 11.1.2003, 20:33 |
| :-))) Ну-ну, не хотите на колесо посмотреть: http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1042014812 |
| Автор: Medved 13.1.2003, 02:56 |
| http://delphi.mastak.ru/cgi-bin/download.pl?look=1&id=1041787265&n=2 - да... фишка сильная... |
| Автор: Ramstar 13.1.2003, 19:12 |
| да изврат, а можно было проще пребрать на ассемблере и памяти меньше и скорость больше |