Главная страница
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.054 c
15-1338429114
Думкин
2012-05-31 05:51
2013.03.22
Жизнь


2-1331024938
leklerk
2012-03-06 13:08
2013.03.22
Достаточно ли одного ADOConnection?


15-1339245975
AV
2012-06-09 16:46
2013.03.22
О фильмах про зомби


15-1329506289
TUser
2012-02-17 23:18
2013.03.22
Элемент униформы


15-1338216754
leklerk
2012-05-28 18:52
2013.03.22
Когда нужно использовать ООП?