Perl 右侧带破折号的sprintf垫线
我需要在右边用破折号('-')填充一个字符串。e、 g.将Perl 右侧带破折号的sprintf垫线,perl,printf,Perl,Printf,我需要在右边用破折号('-')填充一个字符串。e、 g.将'M'转换为'M-----' sprintf“%-6s”,“M”给我'M'。我尝试了printf“%-6-s”,“M”,和printf“%--6s”,“M”,但这两个都不起作用 这可以用sprinf来完成吗?如果可以,怎么做?单用sprintf是做不到的。(sprintf将只填充空格或零。) 或 或 单靠sprintf是做不到的。(sprintf将只填充空格或零。) 或 或 sprintf仅支持使用0和填充,因此不支持。您可以使用其中一个
'M'
转换为'M-----'
sprintf“%-6s”,“M”
给我'M'
。我尝试了printf“%-6-s”,“M”代码>,和printf“%--6s”,“M”代码>,但这两个都不起作用
这可以用sprinf
来完成吗?如果可以,怎么做?单用sprintf
是做不到的。(sprintf
将只填充空格或零。)
或
或
单靠sprintf
是做不到的。(sprintf
将只填充空格或零。)
或
或
sprintf
仅支持使用0
和
填充,因此不支持。您可以使用其中一个填充,然后替换填充,但问题是,您可能会替换原始字符串中的任何填充字符。例如sprintf('%-6s',M')=~s/-/gr
产生--M---
从:
如果您需要使用空白或零以外的字符填充,您可以
使用以下方法之一。它们都生成一个带有
使用x
操作符并将其与$text
组合。这些方法并不适用
截断$text
使用任意字符左右填充,创建新字符串:
my $padded = $pad_char x ( $pad_len - length( $text ) ) . $text;
my $padded = $text . $pad_char x ( $pad_len - length( $text ) );
左右填充任意字符,直接修改$text
:
substr( $text, 0, 0 ) = $pad_char x ( $pad_len - length( $text ) );
$text .= $pad_char x ( $pad_len - length( $text ) );
如果您经常这样做,您可以将其包装在一个子例程中
sub pad {
my ($str, $padding, $length) = @_;
my $pad_length = $length - length $str;
$pad_length = 0 if $pad_length < 0;
$padding x= $pad_length;
$str.$padding;
}
say pad('M', '-', 6);
say pad('MMMMMM', '-', 6);
say pad('12345', '-', 6);
say pad('1234567', '-', 6);
say pad(' ', '-', 6);
sprintf
仅支持使用0
和
填充,因此不支持。您可以使用其中一个填充,然后替换填充,但问题是,您可能会替换原始字符串中的任何填充字符。例如sprintf('%-6s',M')=~s/-/gr
产生--M---
从:
如果您需要使用空白或零以外的字符填充,您可以
使用以下方法之一。它们都生成一个带有
使用x
操作符并将其与$text
组合。这些方法并不适用
截断$text
使用任意字符左右填充,创建新字符串:
my $padded = $pad_char x ( $pad_len - length( $text ) ) . $text;
my $padded = $text . $pad_char x ( $pad_len - length( $text ) );
左右填充任意字符,直接修改$text
:
substr( $text, 0, 0 ) = $pad_char x ( $pad_len - length( $text ) );
$text .= $pad_char x ( $pad_len - length( $text ) );
如果您经常这样做,您可以将其包装在一个子例程中
sub pad {
my ($str, $padding, $length) = @_;
my $pad_length = $length - length $str;
$pad_length = 0 if $pad_length < 0;
$padding x= $pad_length;
$str.$padding;
}
say pad('M', '-', 6);
say pad('MMMMMM', '-', 6);
say pad('12345', '-', 6);
say pad('1234567', '-', 6);
say pad(' ', '-', 6);
sprintf(“%-6s”,“M”)=~tr||-r代码>sprintf(“%6s”,“M”)=~tr||-r代码>将我介绍给“x”操作员的奖励积分。在使用perl的10年中,我从未见过这种情况,现在我感觉自己像个新手。为我介绍“x”操作符,我获得了额外的积分。在使用perl的10年中,我从未见过这种情况,现在我感觉自己像个新手。
M-----
MMMMMM
12345-
1234567
--