1

如何在此语句中生成固定宽度的输出?

use Term::ANSIColor;
printf("%s",sprintf("[%8s]",colored(sprintf("\$%0.2f",$Price),'red')))

%8s此声明中没有任何影响。是否有任何颜色意识格式说明符?

4

1 回答 1

9

当然可以,只是在终端上更改颜色的代码也有宽度,因此您传递给第一次sprintf调用的字符串已经超过 8 个字符。试试看

sprintf("[%18s]", ...

你会看到影响。

但是终端代码的宽度是深奥的,所以最好将颜色编码移到固定宽度格式之外。

printf("[%s]", colored( sprintf("%8s", sprintf("\$%0.2f",$Price) ),'red') )
于 2013-10-29T16:16:49.930 回答