Удаление ведущих нулей из строки delphi

Delphi 7

Как удалить ведущие нули в строке delphi?

Пример:

00000004357816

function removeLeadingZeros(ValueStr: String): String
begin
 result:= 
end;

Ответы

Ответ 1

function removeLeadingZeros(const Value: string): string;
var
  i: Integer;
begin
  for i := 1 to Length(Value) do
    if Value[i]<>'0' then
    begin
      Result := Copy(Value, i, MaxInt);
      exit;
    end;
  Result := '';
end;

В зависимости от точных требований вы можете обрезать пробелы. Я не сделал этого здесь, так как в вопросе не упоминался.

Обновление

Я исправил ошибку, указанную Сергом в исходной версии этого ответа.

Ответ 2

Код, который правильно удаляет ведущие нули из "000" -подобных строк:

function TrimLeadingZeros(const S: string): string;
var
  I, L: Integer;
begin
  L:= Length(S);
  I:= 1;
  while (I < L) and (S[I] = '0') do Inc(I);
  Result:= Copy(S, I);
end;

Ответ 3

Вероятно, не самый быстрый, но это однострочный; -)

function RemoveLeadingZeros(const aValue: String): String;
begin
  Result := IntToStr(StrToIntDef(aValue,0));
end;

Работает только для чисел внутри диапазона Integer.

Ответ 4

Используйте JEDI Code Library, чтобы сделать это:

uses JclStrings;

var
  S: string;

begin
  S := StrTrimCharLeft('00000004357816', '0');
end.