我想在Perl中打印时将字符串格式化(用字符截断/追加)到指定的长度。
例如
$string='my_string';
printf("%04s",$string);
应该打印
my_s
如果
$string='my';
我应该
00my
有没有办法打印最后四个字符?
ring
如果string是
$string='my';
它应该打印
00my
答案 0 :(得分:13)
您想要使用此格式字符串而不是您的格式:
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
答案 1 :(得分:3)
printf('%04s', substr($_, 0, 4));