ID : 278
Sprintf
機能
データを指定したフォーマットに変換し、文字列として返します。
構文
Sprintf(フォーマット, データ1[,データ2[,データ3...]])
指定項目
- フォーマット
- 変換形式を文字列型データで指定します。
- データ
- 変換するデータを指定します。複数指定することが可能です。
戻り値
文字列型データを返します。
解説
フォーマットでは任意の文字列と、データを変換して出力するための変換指定文字列を指定することができます。
ひとつの変換指定文字列は、引数として指定されたデータをひとつ変換します。複数の変換指定文字列がある場合は、変換指定文字列の記述順に、引数として指定されたデータが先頭から順に変換されます。
変換指定文字列は下記のように指定します。
%[フラグ][表示桁数]変換指定記号
フォーマット中で先頭に'%'の付いた文字列は、変換指定文字列とみなされますので、'%'を出力したい場合は"%%"と記述します。
- 変換指定記号
指定記号 意味 d, i 10進符号付き整数 o 8進符号無し整数 x, X 16進符号無し整数( X は大文字で出力) e, E 指数形式浮動小数点数( E は大文字で出力) f 小数形式浮動小数点数 g, G e または f 形式のうち適した方( G は大文字で出力) c 文字 s 文字列 - フラグ(オプション)
フラグ 意味 - フィールドの左寄せ + 常に符号を出力 スペース 数値が正または 0 の場合は符号の代わりに空白を出力 # 出力文字列に対して以下の処理が付加されます。
- o 変換では数字の先頭に "0"が付加されます。
- x, X 変換では数字の先頭に "0x" または "0X"が付加されます。
- e, E, f, g, G 変換では小数点が無条件で付加されます。
- g, G 変換では小数点以下の必要ない'0'も出力されます。
その他の変換指定記号に対しては無効です。
0 出力文字数が表示桁数未満の場合は'0'を出力
数値の場合、ゼロ埋めを指定することができます。
指定例 出力結果 sprintf("[%08.3f]", 123.45678)
[0123.457]
sprintf("[%04d]", 1)
[0001]
マイナス記号を指定することで左詰で出力することができます。
指定例 出力結果 sprintf("[%-16s]", "It is great.")
[It is great. ]
sprintf("[%-8.3f]", 123.45678)
[123.457 ]
sprintf("[%-4d]", 1)
[1 ]
- 表示桁数(オプション)
下記形式で表示桁数を指定します。
・全体の桁数や精度に10進数の値を指定します。[全体の桁数][.精度]
・精度の意味は下表のように、指定記号により異なります。
指定記号 意味 指定されていないとき(デフォルト値) d、i、o、x、X 最小桁数 1桁 e、E、f 小数点以下の桁数 6桁 g、G 最大有効桁数 6桁 c 精度指定は無効 1文字 s 最大文字数 データの文字数
・精度の数値指定がなく、ピリオド'.'だけがある場合は、0を指定したとみなします。
指定例 出力結果 sprintf("[%8.3f]", 123.45678)
[ 123.457]
sprintf("[%8.3e]", 1234.5678)
[1.235e+003]
sprintf("[%16s]", "It is great.")
[ It is great.]
sprintf("[%.8s]", "It is great.")
[It is gr]
注意事項
Sprintfでは、言語によらず、小数点は"."(ピリオド)、桁区切り記号は","(カンマ)を使用します。言語によっては、小数点、桁区切り記号が異なる場合がありますので、言語に合わせた表記にしたい場合は、Format関数を使用してください。
用例
'!TITLE "指定したフォーマットに変換し、文字列として出力する"
' 10進数の200を16進数表記の文字列に変換
Sub Sample_SPrintf
Dim aaa As String
' 10進数の200を16進数の文字列に変換
aaa = Sprintf( "10進数の[%d]は16進数で[&H%X]です。", 200, 200 )
' メッセージ出力ウィンドウに"10進数の[200]は16進数で[&HC8]です。"を表示
PrintDbg aaa
End Sub
ID : 278