書式指定文字列の記述方法

値に対してどのように書式を設定するのかは書式指定文字列を使って指定します。書式指定文字列は、そのまま表示される文字列と、値を変換して表示するフォーマット指定子を組み合わせて記述します。ここでは Perl で書式指定文字列を記述する方法について解説します。

(Last modified: )

書式指定文字列の記述方法

書式指定文字列は、そのまま表示される文字列と、値を変換して表示するフォーマット指定子を組み合わせて記述します。

フォーマット指定子は値の変換方法を具体的に記述する部分で、変換される値の数だけフォーマット指定子を記述する必要があります。フォーマット指定子の書式は次の通りです。

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

フォーマット指定子は % で始まり「型指定子」を記述します。またオプションとして指定可能な項目として「フラグ」「最小幅」「精度/最大幅」があります。

詳細な使い方は次のページ以降で細かく確認していきます。ここでは例として %03d と言うフォーマット指定子使ってみます。 %03d を指定した場合は対応する値を 10 進数の数値で幅を 3 桁にし、 0 詰めにするものです。

printf("%03d", 30);

上記の場合は書式指定文字列にフォーマット指定子だけを記述しています。この場合は 30 と言う値を %03d を使って変換された "030" と言う文字列が画面に出力されます。

フォーマット指定子以外の文字列

書式指定文字列にはフォーマット指定子を記述しますが、フォーマット指定子以外の文字列を記述することも可能です。書式指定文字列の中のフォーマット指定子以外の文字列は、そのまま文字列として使われます。

printf("数値は %03d です", 30);

上記の場合は書式も指定文字列の中に "数値は " と " です" と言う文字列が記述されています。フォーマット指定子以外の文字列はそのまま文字列として使われますので結果として "数値は 030 です" と言う文字列が表示されます。

複数の値をまとめて変換する

変換する値は複数指定することができます。複数の値を変換する場合は、指定した値の数だけフォーマット指定子を記述します。下記では 2 つの値を変換します。

printf("Aは %03d 円、Bは %03d 円です", 30, 80);

値を複数指定する場合は、このようにカンマ(,)で区切って並べて記述して下さい。

変換する値が 2 つですのでフォーマット指定子も 2 つ記述しています。最初の値は最初のフォーマット指定子を使って変換され、 2 つ目の値は 2 番目のフォーマット指定子を使って変化されます。結果として "Aは 030円、Bは 080円です" と画面に表示されます。

サンプルコード

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

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

printf("Aは %03d 円、Bは %03d 円です\n", 30, 80);

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

perl sample.pl

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

書式指定文字列の記述方法(1)

2 つの値に対してそれぞれ書式を指定して文字列を作成しました。

-- --

Perl で書式指定文字列を記述する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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