Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Удаления пробелов в строке.   Найти похожие ветки 

 
aka   (2012-06-27 11:09) [0]

Как будет быстрее:

1)

procedure TForm1.Button1Click(Sender: TObject);
var
 str, rez : String;
 i,k: Integer;
begin
 k := 0;
 str := "q w er t  y   try"+#13+"as df"+#13+"z x c v";
 SetLength(rez, Length(str));

 for i := 1 to Length(str) do
 if ((str[i] in ["a".."z", "A".."Z", "0".."9"])) then
   rez[i-k] := str[i]
 else
   Inc(k);

 SetLength(rez, Length(rez)-k);
end;


или

2)


procedure TForm1.Button1Click(Sender: TObject);
var
 str, rez : String;
 i,k: Integer;
begin
 str := "q w er t  y   try"+#13+"as df"+#13+"z x c v";

 for i := 1 to Length(str) do
 if ((str[i] in ["a".."z", "A".."Z", "0".."9"])) then
   rez := rez + str[i];

end;


 
AV ©   (2012-06-27 11:20) [1]

как быстрее - можно замерить самому
а понятнее будет юзать StrUtils.ReplaceString


 
AV ©   (2012-06-27 11:24) [2]

т.е. StringReplace

uses StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
var
 str: string;
begin
 str := "q w er t  y   try"+#13+"as df"+#13+"z x c v";
 ShowMessage( StringReplace(str," ","",[rfReplaceAll]) );


 
Anatoly Podgoretsky ©   (2012-06-27 11:53) [3]

> aka  (27.06.2012 11:09:00)  [0]

Ты просишь нам измерить


 
Anatoly Podgoretsky ©   (2012-06-27 11:54) [4]

> aka  (27.06.2012 11:09:00)  [0]

И обе функции работают не так как заявлено.


 
Омлет ©   (2012-06-27 12:36) [5]

> aka   (27.06.12 11:09)

К гадалке не ходи - ясно, что с предварительным выделением памяти быстрее.
А ещё можно "пробелы" вырезать грубо, вместе со всеми служебными символами (< #33):

function StripSpasesAndSpecChars(const s: AnsiString): AnsiString;
var
 i, n: integer;
begin
 n := 0;
 SetLength(Result, Length(s));
 for i := 1 to Length(s) do
 begin
   if PByte(@s[i])^ > 32 then
   begin
     inc(n);
     PByte(@Result[n])^ := PByte(@s[i])^;
   end;
 end;
 SetLength(Result, n);
end;


 
Омлет ©   (2012-06-27 12:42) [6]

А можно вообще не выделять доп. память, если есть возможность модифицировать исходную.



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

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.245 c
15-1337082565
Семечка
2012-05-15 15:49
2013.03.22
Про FireMonkey


15-1337023240
Kerk
2012-05-14 23:20
2013.03.22
Ищется компонент/модуль для шифрования/дешифрования AES-256


4-1259833099
Mixali4
2009-12-03 12:38
2013.03.22
Как получить идентификатор контекстного меню


2-1341842887
Den
2012-07-09 18:08
2013.03.22
remote desktop sreenshot?


2-1329837414
Чайник
2012-02-21 19:16
2013.03.22
Управление z-order окон