如何用字符串“填充”可变长度字符串?

时间:2014-12-02 13:23:55

标签: perl

假设我的变量$foo的长度介于1到10之间。

并且变量$bar的长度为12,最初设置为Iamheretopad

我想用第一个变量覆盖第二个变量右对齐

一些例子:

$foo    $bar
1       Iamheretopa1
123     Iamhereto123
123456  Iamher123456

1 个答案:

答案 0 :(得分:4)

如果$ bar是12个字符长而$ foo是5个字符长,那么你想要$ bar的前7个字符,7是长度的差异(12-5)。

$bar = substr($bar, 0, length($bar)-length($foo)) . $foo;

或者,如果$ foo的长度为5个字符,则可以替换$ bar的最后5个字符。

substr($bar, -length($foo)) = $foo;

顺便说一句,如果你想用空格或零填充,你可以使用sprintf

$bar = sprintf('%12s', $foo);         # Spaces, constant size
$bar = sprintf('%*s', $size, $foo);   # Spaces, variable size
$bar = sprintf('%012s', $foo);        # Zeroes, constant size
$bar = sprintf('%0*s', $size, $foo);  # Zeroes, variable size