Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];

Вниз

Есть ли функция удаляющая все пробелы из строки   Найти похожие ветки 

 
OlegM   (2003-04-17 09:27) [0]

Привет всем!
Но не только начальные и конечные как Trim но и если есть по середине. Если есть подскажите.


 
Song   (2003-04-17 09:36) [1]

Pos().. Delete() ..


 
MBo   (2003-04-17 09:36) [2]

StringReplace можно использовать,но медленно при больших объемах.
В этом случае лучше самому написать


 
OlegM   (2003-04-17 09:37) [3]

Жаль.


 
MBo   (2003-04-17 09:38) [4]

Что жаль-то?????


 
Fiend   (2003-04-17 09:43) [5]

То MBo:
Думаю что существенно быстрее чем StringReplace не получится.

То OlegM:
а действительно, что жаль то? самому трудно написать чтоли?


 
OlegM   (2003-04-17 09:44) [6]

Это было насчет Pos и Delete


 
MBo   (2003-04-17 09:56) [7]

>Fiend
Получится. Например, простой цикл с переписыванием назад символов, если встречается пробел.


 
tv   (2003-04-17 10:14) [8]

Что-то типа этого
function DeleteSpaces(s: string): string;
begin
while pos(" " ,s) <> 0 do
Delete(s,(pos(" " ,s)),1);
result:=s;
end;


 
Radionov Alexey   (2003-04-17 11:23) [9]

>tv © (17.04.03 10:14)
И вместо количества операций пропорционального Length(S) получаем Length(S)^2 - квадратичная сложность на линейной задаче.


 
Sha   (2003-04-17 11:25) [10]

Тогда уж лучше типа этого

p: pchar;
ch: char;
i: integer;
---
p:=pointer(s);
for i:=1 to Length(s) do begin;
ch:=s[i];
if ch<>" " then begin;
p^:=ch; inc(p);
end;
end;
SetLength(s,p-pointer(s));


 
Radionov Alexey   (2003-04-17 11:25) [11]

Даже кубичная. О как! :))


 
Sha   (2003-04-17 11:31) [12]

Sha © (17.04.03 11:25)
забыл поставить в самом начале UniqueString(s);


 
MBo   (2003-04-17 11:49) [13]

i,p:integer;

for i:=1 to length(s) do
if s[i]<>" " then
s[i-p]:=s[i]
else
inc(p);
SetLength(s,Length(s)-p);


 
MBo   (2003-04-17 11:51) [14]

перед началом
p:=0;


 
Radionov Alexey   (2003-04-17 11:56) [15]

Кину и я кирпич

p := 0;
for k := 1 to Length(S) do
if S[k]<>" " then
begin
inc(p);
S[p] := S[k];
end;
Setlength(S,p);




 
REA   (2003-04-17 12:11) [16]

Почему функции работы со строками вызывают флейм уже который раз? Наверно они плохие в Delphi. Ну возьмите более другие и перестаньте изобретать велосипеды!


 
Sha   (2003-04-17 15:49) [17]

2MBo © (17.04.03 11:49)
2Radionov Alexey © (17.04.03 11:56)

REA © (17.04.03 12:11) отчасти прав :(
Дело в том, что при каждом присваивании вида s[i]:=xxx строка s проверяется на уникальность, поэтому лучше использовать pchar.


 
MBo   (2003-04-17 16:12) [18]

>s проверяется на уникальность
И действительно ;)
раньше не обращал внимания.
если кому интересно, вот timing:

Stringreplace: 2800
Pos-Delete(код ниже): 500
MBo/R.A. : 120
Sha: 105


i:=pos(" ",s);
while i>0 do begin
Delete(s,i,1);
i:=pos(" ",s);
end;


 
Radionov Alexey   (2003-04-17 16:24) [19]

>Sha © (17.04.03 15:49)
Блин, верно :(



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

Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
14-91483
Дмитрий К.К.
2003-04-10 06:38
2003.04.28
Именинники 10 апреля


14-91506
Mike Kouzmine
2003-04-10 11:45
2003.04.28
Можно ли по документу определить принтер


1-91384
BBCHa
2003-04-16 13:56
2003.04.28
Удалить MenuItem из MainMenu


3-91177
alxx
2003-04-09 14:39
2003.04.28
GetDate


6-91436
Dona
2003-03-06 12:45
2003.04.28
ServerSock - как отправить сообщ. клиенту





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский