Skip to main content

RemoveLeadingZero

Function RemoveLeadingZero( S : String) : string

Example

procedure ScriptEvent(var Value: variant);
begin
Value := RemoveLeadingZero('000120'); // 120
end;

Usage

RemoveLeadingZero removes leading ASCII zero characters while deliberately retaining at least the source's final character.

Parameters and return value

S is passed by value. The result is a copy with the qualifying leading zero run deleted.

InputResultReason
''''No characters.
'0''0'The sole/final character is retained.
'0000''0'All leading positions except the final one are deleted.
'000A''A'Leading zeroes are textual; a numeric suffix is not required.
' 001'' 001'The first character is not '0'; no trim is performed.
'-001''-001'A sign at position one stops removal.

Important behavior and quirks

  • This is textual cleanup, not numeric parsing or formatting.
  • Only ASCII zero U+0030 is recognised.
  • Whitespace, plus/minus signs, decimal separators and other prefixes prevent any removal.
  • The source argument is not declared const, but it is still passed by value and the caller's variable is not mutated.

Additional Technical Info

RemoveLeadingZero deletes consecutive ASCII '0' characters from the start of a string, but never examines or removes the last character. This ensures an all-zero non-empty input retains one zero.

The example is fictional and source-reviewed only.

How it works

Velox scans from index 1 only while i <= Length(Result) - 1 and the current character is '0'. It then deletes positions 1..i-1 in one operation.

Performance and concurrency

The prefix is scanned once and removed once. No shared state is read.

Created 2026-07-15