我想用Perl的sprintf到ZEROFILL的變量。如何使用sprintf在Perl中填充變量長度爲零?
sprintf("%08d", $var);
但我想動態確定有多少數字zerofill。
如何與一個叫$zerofill
變量替換「8」 sprintf("%08d", $var)
?
我想用Perl的sprintf到ZEROFILL的變量。如何使用sprintf在Perl中填充變量長度爲零?
sprintf("%08d", $var);
但我想動態確定有多少數字zerofill。
如何與一個叫$zerofill
變量替換「8」 sprintf("%08d", $var)
?
的第一個參數sprintf只是一個字符串:
my $zerofill = 9;
my $number = 1000;
my $filled = sprintf "%0${zerofill}d", $number;
通知括號從字符串的其餘部分分開設置的變量名稱。
我們有這個特殊的問題,因爲稍微聰明演習Learning Perl提醒人們,字符串僅僅是字符串。 :)
然而,隨着mobrule points out in his answer,sprintf的有許多功能可以給你這種靈活性。這種看似簡單的功能的文檔相當長,並有很多好東西。
sprintf
和printf
支持*
符號(這至少從5.8工作):
printf "%0*d", 9, 12345;
000
printf '$%*.*f', 8, 2, 456.78;
$ 456.78
我需要做的事情略有不同:零墊浮點價值並獲得確切的長度。
在我來說,我到底需要12字節,其中包括小數點。這比你上面的有點棘手。這裏是任何人需要這樣的情況:
說$ inputVal是從某個地方傳入的字符串,其值爲1001.1。請注意,它應不超過12個字符這個可靠地工作
# This will give us extra zeros, but the string may be too long
my $floatVal = sprintf('%*.*f', 12, 12, $inputValue);
# This will remove any extra zeros
$result = substr($floatVal, 0, 12);