从delphi字符串中删除前导零

IEl*_*ite 13 delphi delphi-7

德尔福7

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

例:

00000004357816

function removeLeadingZeros(ValueStr: String): String
begin
 result:= 
end;
Run Code Online (Sandbox Code Playgroud)

klu*_*udg 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;
Run Code Online (Sandbox Code Playgroud)


Dav*_*nan 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;
Run Code Online (Sandbox Code Playgroud)

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

更新

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

  • 嗯... ShowMessage(removeLeadingZeros('000')); (6认同)

Cló*_*ior 11

使用JEDI代码库执行此操作:

uses JclStrings;

var
  S: string;

begin
  S := StrTrimCharLeft('00000004357816', '0');
end.
Run Code Online (Sandbox Code Playgroud)

  • 您应该提及(如果OP不知道)这需要JEDI代码库(JCL),并提供链接. (6认同)

Jør*_*eit 8

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

function RemoveLeadingZeros(const aValue: String): String;
begin
  Result := IntToStr(StrToIntDef(aValue,0));
end;
Run Code Online (Sandbox Code Playgroud)

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


小智 5

在 2021 年搜索这个问题时,我现在发现了一个更好的解决方案,那就是使用 TStringHelper 函数 TrimLeft,如下所示

myString := myString.TrimLeft(['0']);
Run Code Online (Sandbox Code Playgroud)

有关文档的更多信息,请参阅此处http://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.TStringHelper.TrimLeft