Mic*_*zer 4 perl printf zerofill
我想使用Perl的sprintf来对变量进行zerofill.
sprintf("%08d", $var);
Run Code Online (Sandbox Code Playgroud)
但我想动态确定zerofill有多少位数.
如何sprintf("%08d", $var)用一个名为$zerofill?的变量替换"8"in ?
bri*_*foy 15
sprintf的第一个参数只是一个字符串:
my $zerofill = 9;
my $number = 1000;
my $filled = sprintf "%0${zerofill}d", $number;
Run Code Online (Sandbox Code Playgroud)
注意大括号将变量名称与字符串的其余部分分开.
我们将这个特殊问题作为Learning Perl中的一个稍微聪明的练习来提醒人们字符串只是字符串.:)
然而,正如mobrule在他的回答中指出的那样,sprintf有许多功能可以为您提供这种灵活性.这个看似简单的功能的文档很长,并且有很多好东西.
mob*_*mob 15
sprintf并printf支持该*符号(至少5.8以上):
printf "%0*d", 9, 12345;
000012345
Run Code Online (Sandbox Code Playgroud)
printf '$%*.*f', 8, 2, 456.78;
$ 456.78
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13444 次 |
| 最近记录: |