フォーマット指定子の最小幅を指定する

フォーマット指定子のオプションの 1 つである最小幅を指定する方法です。少なくとも何文字文の文字列を作成するのかを設定することができます。数値を 0 詰めで表示する場合などに必要となります。ここでは Perl でフォーマット指定子のオプションである最小幅の使い方について解説します。

(Last modified: )

最小幅を指定する

フォーマット指定子のオプションの 1 つである最小幅を指定する方法です。最小幅を指定する場合はフォーマット指定子の次の位置に記述します。

%[フラグ][最小幅][.精度/最大幅]型指定子

結果として取得する文字列の最小の幅を指定します。結果が最小幅よりも少ない場合は空白や 0 詰めなどで埋められます。また、結果が最小幅よりも大きい場合には最小幅の設定に関わらず必要な幅で返されます。

使い方は次のようになります。

printf("[%5d]\n", 30);
printf("[%#5o]\n", 30);

型変換子との組み合わせの他に、フラグと最小幅を同時に設定することも可能です。

なおフラグによって正の数の前に + を付けたり、 16 進数の前に 0x を付けた場合などは、これらのフラグによって付加された文字も含めた結果に対して最小幅の設定が行われます。

サンプルコード

それでは簡単なサンプルを作成します。

use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

printf("[%d]\n", 30);
printf("[%5d]\n", 30);
printf("[%5d]\n", -30);
printf("[%-5d]\n", -30);
printf("[%#o]\n", 30);
printf("[%#5o]\n", 30);
printf("[%#x]\n", 30);
printf("[%#5x]\n", 30);
printf("[%#b]\n", 2);
printf("[%#5b]\n", 2);
printf("[%15e]\n", 12.3);
printf("[%15f]\n", 12.3);
printf("[%3d]\n", 760128);

テキストエディタでプログラムを記述したあと sample.pl という名前で保存します。(文字コードは UTF-8 です)。コマンドプロンプトを起動し、プログラムを保存したディレクトリへ移動したあとで次のように実行します。

perl sample.pl

次のように実行結果が表示されます。

フォーマット指定子の最小幅を指定する(1)

数値に対して色々な最小幅を設定しフォーマットされた文字列を取得しました。

-- --

Perl でフォーマット指定子のオプションである最小幅の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。