Форум: "Начинающим";
Текущий архив: 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