右側の文字列をダッシュ( ' - ')で埋める必要があります。例えば'M'
〜'M-----'
に変換してください。sprintf右側にダッシュ付きの文字列
sprintf "%-6s", "M";
は私に'M '
を与えます。私はprintf "%-6-s", "M";
を試みたが、printf "%--6s", "M";
が、これらの作業のどちらも...
することは、これはsprinf
そうであれば、どのようにして行うことができますか?
右側の文字列をダッシュ( ' - ')で埋める必要があります。例えば'M'
〜'M-----'
に変換してください。sprintf右側にダッシュ付きの文字列
sprintf "%-6s", "M";
は私に'M '
を与えます。私はprintf "%-6-s", "M";
を試みたが、printf "%--6s", "M";
が、これらの作業のどちらも...
することは、これはsprinf
そうであれば、どのようにして行うことができますか?
sprintf
だけではできません。 (sprintf
スペースで、またはゼロでパッドのみであろう。)
sprintf("%-6s", $s) =~ tr/ /-/r
又は
substr($s.("-" x 6), 0, 6)
又は
$s . ("-" x (6-length($s)))
sprintf
のみ0
とでパディングをサポートし、そうありません。そのうちの1つをパディングしてパディングを置き換えることはできますが、その問題は、元の文字列のパディング文字を置き換える危険があることです。例えば、
sprintf('%-6s', ' M') =~ s/ /-/gr
は--M---
を生成します。 FAQから
:
空白以外の文字でパッドに必要とするか、またはあなたが 次のいずれかの方法を使用することができますゼロの場合。それらはすべて、 の
x
演算子を含むパッド文字列を生成し、それを$text
と組み合わせます。これらのメソッドは、 を切り捨てて$text
を切り捨てません。左と任意の文字と、右パディング、新しい文字列の作成:あなたは、多くの場合、それを行う場合
substr($text, 0, 0) = $pad_char x ($pad_len - length($text)); $text .= $pad_char x ($pad_len - length($text));
:、任意の文字と
my $padded = $pad_char x ($pad_len - length($text)) . $text;
my $padded = $text . $pad_char x ($pad_len - length($text));
左と右のパディングを直接$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);
出力:
M-----
MMMMMM
12345-
1234567
--
私を 'x'演算子に導入するためのボーナスポイント。 perlを使って10年間働いたことがなかったので、今はnewbのように感じます。 – ipetrik
'はsprintf( "% - 6S"、 "M")=〜TR | | - | r; ' –