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

Вниз

Нормализовать строку   Найти похожие ветки 

 
weeeeee   (2006-10-15 11:30) [0]

Есть необходимость привести некую строку к нормальному виду, под нормальным видом я понимаю слудующее:
"ЭЙ каКДела  вА    дм ИНи стрАЦ ии" = "эйкакделавадминистрации", -- правая часть этого выражения "нормализованная".
Сделал таким образом, но может, не рационально? Что подскажете?

MyString -- источник.
 MyString := LowerCase(MyString);
 while Pos(" ", MyString) <> 0 do
   Delete(MyString, Pos(" ", MyString), 1);
 Result := MyString;


 
Рамиль ©   (2006-10-15 12:02) [1]

Должно быть AnsiLowerCase

А само удаление, наверное, будет быстрее если копировать в другую строку (предварительно сделав SetLength и вызвать повторно в конце, посчитав количество перенесенных символов)


 
weeeeee   (2006-10-15 12:44) [2]

Спасибо! Но второе я что-то совесем плохо воспринял, можно кусочком кода?, если возможно.


 
Рамиль ©   (2006-10-15 14:20) [3]

типа такого

function DeleteSpaces(const Value: string): string;
var
 Counter, i: integer;
begin
 Counter := 0;
 SetLength(Result, Length(Value));
 for i := 1 to Length(Value) do
   if Value[i] <> " " then
   begin
      inc(Counter);
      Result[Counter] := Value[i];
   end;
 SetLength(Result, Counter);
end;


 
Loginov Dmitry ©   (2006-10-15 14:33) [4]

Result := AnsiLowerCase(StringReplace(Str, " ", "", [rfRelpaceAll]));


 
Virgo_Style ©   (2006-10-15 14:44) [5]

Рамиль ©   (15.10.06 12:02) [1]
А само удаление, наверное, будет быстрее если копировать в другую строку


А, собственно, зачем в другую?


 
weeeeee   (2006-10-15 15:30) [6]

А что в данном случае бует работать быстрее: StringReplace или DeleteSpaces?


 
Рамиль ©   (2006-10-15 15:44) [7]


> А, собственно, зачем в другую?

А как? Кадый раз переносить конец строки?


> А что в данном случае бует работать быстрее: StringReplace
> или DeleteSpaces?

Я не дождался конца работы StringReplace что бы сравнить:

var
 a, b: string;
 t, i: integer;
begin
 b := "ghk bdf fr";
 setlength(a, 1000000);
 for i:= 1 to 1000000 do
   a[i] := b[random(9) + 1];
 t := GetTickCount;
 DeleteSpaces(a);
 ShowMessage(IntToStr(GetTickCount - t));
 t := GetTickCount;
 StringReplace(a, " ", "", [rfReplaceAll]);
 ShowMessage(IntToStr(GetTickCount - t));
end;



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

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

Наверх





Память: 0.46 MB
Время: 0.054 c
2-1160673110
XeRoN
2006-10-12 21:11
2006.10.29
Закрытие чужой формы


1-1158591285
rub67
2006-09-18 18:54
2006.10.29
TRemotable и управление памятью


2-1160544824
gvozdkoff
2006-10-11 09:33
2006.10.29
Ключевре поле DB Paradox


2-1160646832
GunGarry
2006-10-12 13:53
2006.10.29
чтение из файла


15-1159467006
_Ламер_
2006-09-28 22:10
2006.10.29
Как сделать на изображении узор по типу колец на воде?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский