我正在开发一款自动为学生分配注册号的应用程序。
如何将"1"格式化为"001"I.e从001开始计数而不是1例如:
Ubah david: 14/CSC/001
.....
Obi emeka : 14/CSC/122
使用格式。(链接到Delphi 10 Seattle文档,但该函数多年来没有更改。该函数在所有Delphi版本(自1.0以来)和FreePascal中都位于SysUtils单元中,在大多数其他现代Pascal方言中也可用。)
for i := 1 to 10 do
WriteLn(Format('%.3d', i));
ReadLn;
格式说明符有多个部分(%后面跟着可选的索引:、可选的左对齐指示符-,可选的宽度和可选的
%d
表示
小数。参数必须是整数值。该值将转换为十进制数字字符串。如果格式字符串包含精度说明符,则表示生成的字符串必须至少包含指定数量的数字;如果该值的位数较少,则生成的字符串将用零填充。
您可以直接传递索引、宽度和精度值(如上例所示),也可以使用星号(星号或*
)作为占位符间接传递。(请参阅下面的精度部分的示例。)
所以在上面的例子中,把它们放在一起,你会得到一个宽度至少为3(精度)的整数值,左加零:
001
002
003
004
005
006
007
008
009
010
因此,把它放在一个函数中:
function ZeroPad(const Value: Integer; const Width: Integer): string;
begin
Result := Format('%.*d', [Width, Value]);
end;
示例调用:
for i := 1 to 10 do
WriteLn(ZeroPad(i, 3));
ReadLn;
试试这个函数:
function GetFullNumber(n: word): string;
begin
str(n, result);
while Length(result) < 3 do
result := '0' + result;
end;
或者添加另一个参数:位数:
program Project1;
function GetFullNumber(const n, Digits: word): string;
begin
str(n, result);
while Length(result) < Digits do
result := '0' + result;
end;
begin
Writeln(GetFullNumber(3, 4));
readln;
end.
出现
如果您的Pascal编译器不支持result
保留字,请将其替换为函数名。
function GetFullNumber(const n, Digits: word): string;
begin
str(n, GetFullNumber);
while Length(GetFullNumber) < Digits do
GetFullNumber := '0' + GetFullNumber;
end;