【问题标题】:Perl print formattingPerl 打印格式
【发布时间】:2013-02-07 05:16:36
【问题描述】:

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

例如

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

应该打印

my_s

如果

$string='my';

我应该得到

00my

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

ring

如果字符串是

$string='my';

应该打印出来

00my

【问题讨论】:

  • 你试过Perl的内置printfsprintf吗?
  • 我从未想过使用 %s 进行字符串截断和填充。我会使用正则表达式和 substr 以及一堆数学。为你 +1。

标签: perl string formatting


【解决方案1】:

你想用这个格式字符串代替你的:

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

【讨论】:

    【解决方案2】:
    printf('%04s', substr($_, 0, 4));
    

    【讨论】:

      猜你喜欢
      • 2013-12-30
      • 1970-01-01
      • 2014-11-14
      • 2012-02-05
      • 1970-01-01
      • 2023-01-10
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多