Perl 打印格式

标签 perl string formatting

我想在 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/

相关文章:

regex - perl正则表达式匹配元音和辅音

Perl 使用数组散列的散列计算每秒的日志条目数

windows - 突然之间,perl 脚本不起作用,除非我在它们前面加上 "perl"并提供脚本的完整路径

multithreading - 如何在 Perl 中创建线程?

formatting - 如何将带符号的整数格式化为带符号的十六进制表示形式?

python - 如何让 NumPy 打印尾随 0?

c - 'C' 中变量和指针的字符串连接

python - 将包含数学问题的文本文件转换为包含这些问题答案的文本文件

c - 如何将C中的字符转换为字符数组?

localization - 货币格式化功能真的有用吗?