Perl 打印格式

扫码查看

我想在 Perl 中打印时将字符串格式化(截断/附加字符)到指定的长度。

例如

$string='my_string';
printf("%04s",$string);

应该打印
my_s

还有如果
$string='my';

我应该得到
00my

有没有办法打印最后四个字符?
ring

如果字符串是
$string='my';

它应该打印
00my

最佳答案

你想要做这个格式字符串而不是你的:

printf ("%04.4s", $string);

您需要 .4,因为它指定了最大长度。 (开头的 4 只指定了最小值)

以下是一些测试的输出:
$ perl -e "my \$string = \"my_string\";print sprintf(\"%04.4s\", 22);"
0022
$ perl -e "my \$string = \"my_string\";print sprintf(\"%04.4s\", \$string);"
my_s
$ perl -e "my \$string = \"my\";print sprintf(\"%04s\", \$string);"
00my

这是使用错误格式字符串的输出。如您所见,字符串没有被截断。
$ perl -e "my \$string = \"my_string\";print sprintf(\"%04s\", 22);"
0022
$ perl -e "my \$string = \"my_string\";print sprintf(\"%04s\", \$string);"
my_string

关于Perl 打印格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6445768/

10-11 23:03
查看更多