![]() |
![]() ![]() ![]() ![]() |
|
Преобразование сроки в числоDelphi , Синтаксис , Текст и Строки
Автор: Separator
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Преобразует строку в число, при этом удаля из строки все лишние символы
Зависимости: нет
Автор: Separator, vilgelm@mail.kz, ICQ:162770303, Алматы
Copyright: Separator
Дата: 7 мая 2003 г.
***************************************************** }
function StringToNumber(const Value: string): string;
var
ResStr: string;
i, j, L: integer;
Ch: char;
E, DS: boolean;
begin
Result := '0';
L := Length(Value);
if L <> 0 then
begin
SetLength(ResStr, L);
E := false;
DS := false;
j := 0;
for i := 1 to L do
begin
Ch := Value[i];
case Ch of
'0'..'9':
begin
Inc(j);
ResStr[j] := Ch
end; //'0'..'9': begin
'.', ',': if (not DS) and (not E) and (i <> L) then
begin
DS := true;
Ch := DecimalSeparator;
if j = 0 then
begin
Inc(j);
ResStr[j] := '0';
end; //if j = 0 then begin
Inc(j);
ResStr[j] := Ch
end; //'.', ',': if (not DS) and (i <> L) then begin
'e', 'E': if (not E) and (i <> L) then
begin
E := true;
Ch := 'E';
if j = 0 then
begin
Inc(j);
ResStr[j] := '0';
end; //if j = 0 then begin
Inc(j);
ResStr[j] := Ch
end //'.', ',': if (not DS) and (i <> L) then begin
end //case Ch of
end; //for i:= 1 to L do begin
if j <> 0 then
begin
if ResStr[j] = 'E' then
Dec(j);
if ResStr[j] = DecimalSeparator then
Dec(j);
SetLength(ResStr, j);
Result := ResStr
end //if j <> 0 then begin
end //if L <> 0 then begin
end;
Пример использования: Edit1.Text = ',...,fgftgtr656,.567erdf..5,,632' Edit2.Text := StringToNumber(Edit1.Text); Edit2.Text = 0, 656567E5632 Перевод контента на русский язык: В коде Delphi функция
Пример использования функции:
Вывод в этом примере будет: Код можно улучшить добавлением более полного обработки ошибок и поддержки других форматов чисел. Кроме того, он предполагает, что входная строка содержит только валидные символы; если в ней присутствуют недопустимые символы, функция может производить неправильные результаты. Вот альтернативное решение с использованием регулярных выражений (RegEx) в Delphi: Функция использует класс Обратите внимание, что подход с RegEx может быть более гибким и точным, чем оригинальный код, но он требует включения units Функция StringToNumber преобразует строку в число, удаля из нее все лишние символы и оставляя только цифры, десятичную точку и знак э指数а. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Текст и Строки ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||