从delphi字符串中删除前导零

发布于 2024-11-04 08:39:43 字数 181 浏览 1 评论 0原文

Delphi 7

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

示例:

00000004357816

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

Delphi 7

How do i remove leading zeros in a delphi string?

Example:

00000004357816

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

黒涩兲箜 2024-11-11 08:39:43

正确从类似“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;

Code that removes leading zeroes from '000'-like strings correctly:

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;
转身泪倾城 2024-11-11 08:39:43
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 在此答案的原始版本中发现的错误。

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;

Depending on the exact requirements you may wish to trim whitespace. I have not done that here since it was not mentioned in the question.

Update

I fixed the bug that Serg identified in the original version of this answer.

提笔书几行 2024-11-11 08:39:43

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

uses JclStrings;

var
  S: string;

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

Use JEDI Code Library to do this:

uses JclStrings;

var
  S: string;

begin
  S := StrTrimCharLeft('00000004357816', '0');
end.
我三岁 2024-11-11 08:39:43

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

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

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

Probably not the fastest one, but it's a one-liner ;-)

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

Only works for numbers within the Integer range, of course.

往事风中埋 2024-11-11 08:39:43

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

myString := myString.TrimLeft(['0']);

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

Searching for this in 2021 there is a much better solution that I found now and that is using the TStringHelper function TrimLeft as follows

myString := myString.TrimLeft(['0']);

see here for more on the documentation http://docwiki.embarcadero.com/Libraries/Sydney/en/System.SysUtils.TStringHelper.TrimLeft

囚你心 2024-11-11 08:39:43

试试这个:

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;

Try this:

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文