从delphi字符串中删除前导零

时间:2011-05-02 12:08:19

标签: delphi delphi-7

Delphi 7

如何删除delphi字符串中的前导零?

示例:

00000004357816

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

5 个答案:

答案 0 :(得分:21)

正确删除'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;

答案 1 :(得分:11)

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;

根据具体要求,您可能希望修剪空白。我没有在这里做过,因为在问题中没有提到它。

<强>更新

我修复了Serg在这个答案的原始版本中发现的错误。

答案 2 :(得分:11)

使用JEDI Code Library执行此操作:

uses JclStrings;

var
  S: string;

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

答案 3 :(得分:8)

可能不是最快的,但它是一个单行; - )

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

当然,仅适用于整数范围内的数字。

答案 4 :(得分:0)

尝试一下:

function TFrmMain.removeLeadingZeros(const yyy: string): string;
var
  xxx : string;
begin
  xxx:=yyy;
   while LeftStr(xxx,1) = '0' do
    begin
      Delete(xxx,1,1);
    end;
    Result:=xxx;
end;