Function Reference

StringFormat

フォーマットした文字列を返します(Cのsprintf()関数と同様です)。

StringFormat ( "format control", var1 [, ... var32] )

 

パラメータ

format control 使用するフォーマットとフラグ(注意を参照)
var1...var32 "format control"に従って出力される32個以下の変数

 

返し値

"format control"パラメータで定義された"変数フォーマット"に基づいてフォーマットされた文字列が返されます。

 

注意

バッファオーバーフローを防ぐため、各"変数"は65535文字以下でなければなりません。
"書式制御"では\n (@LF), \r (@CR), \t (@TAB)のようなエスケープ文字を使用できます。"\"を使いたい場合は\\を使用してください。動揺に"%"には%%を使用してください。

"変数フォーマット" は %[flags] [width] [.precision] 形式です。

        幅指定

2番目のオプションフィールドは幅指定です。 幅指定は非負の10進数整数でおこない、表示する文字数の最小値を制御します。 もし出力する文字数が指定した幅よりも少ない場合、空白が(左揃えのための)flagに基づいて値の左か右に指定幅になるまで追加されます。 widthの頭に0をつけるとゼロが指定幅になるまで追加されます(左揃えオプションは使えません)。

幅指定は値の切捨てを引き起こしません。 出力値の文字数が指定幅より多きい場合、幅が指定されていない場合、 値の全ての文字が(精度の範囲内で)表示されます。

        型指定

値の型 出力形式
d, i Integer 符号付10進数整数
o Integer 符号なし8進数整数
u Integer 符号なし10進数整数
x Integer "abcdef"を使用した符号なし16進数整数
X Integer "ABCDEF"を使用した符号なし16進数整数
e Float [ - ]d.dddd e [sign]ddd形式の符号付きの値。 d は1桁の10進数。dddd は1桁以上の10進数。ddd は正確に3桁の10進数。sign は+もしくは-。
E Float 指数を表す文字がeではなくEである以外はeと同じ。
f Float [ - ]dddd.dddd形式の符号付の値。ddddは1桁以上。 小数点の前の桁数は数値の大きさに依存し、小数点の後の桁数は要求された精度に依存します。
g Float fまたはe形式の符号付の値。いずれの場合でもよりコンパクトな値と精度になる。指数の値が-4以下または指定された精度以上の場合のみe形式が使用される。末尾のゼロは切り捨てられ小数点以下に数値がある場合のみ小数点が表示される。
G Float (適所)指数を表す文字がeではなくEである以外はgと同じ。
s String 文字列

        フラグ指定

フラグ 意味 デフォルト
- 与えられた幅で結果を右揃えにする。 右揃え.
+ 出力値が符号付型の場合、符号(+、-) を頭につける 符号は負値(-)の場合のみ表示される。
0 widthの先頭に0をつけると指定幅に達するまでゼロが付加されます。0と-が指定された場合、0は無視されます。整数形式(iuxXod)が指定された場合、0は無視されます。 ゼロ埋めなし
空白 出力値が符号付正数の場合、先頭に空白が付加されます。空白と+フラグが指定された場合、空白は無視されます。 空白なし
# oxX形式に使用した場合、#フラグによって非ゼロの出力値の先頭にそれぞれ0、 0x、0Xが付加されます。 なし
# eEf形式に使用した場合、#フラグによって全ての出力値に小数点が含まれるようになります。 小数点以下の桁が存在する場合のみ小数点が表示されます。
# gG形式に使用した場合、#フラグによって全ての出力値に小数点が含まれるようになり、末尾のゼロの切捨てがおこなわれなくなります。
cdiusに使用した場合は無視されます。
小数点以下の桁が存在する場合のみ小数点が表示されます。末尾のゼロは切り捨てられます。

        精度指定

3番目のオプションフィールドは精度指定です。先頭にピリオド(.)を付けた非負の10進数整数を指定します。これにより表示する文字数、小数点以下の桁数、有効桁数を指定します(下表参照)。幅指定と異なり精度指定は出力値の切捨てや浮動小数値の丸め込みがおこなわれます。下に示すように精度指定に0を使用し値の変換値が0の場合、文字出力されません。

StringFormat( "%.0d", 0 ); /* 文字は返されない */

    精度値が型に与える影響

意味 デフォルト
d, i, u, o, x, X 精度は表示される最小桁数を指定します。 桁数指定が精度より少ない場合、出力値は左側からゼロで穴埋めされます。 桁数が精度より多い場合は値の切捨てはおこなわれません。 デフォルト精度は1です。
e, E 精度は表示される小数点以下の桁数を指定します。表示される最後の桁は丸め込まれます。 デフォルト精度は6です。精度0、ピリオド(.)以下に数値が無い場合は小数点が表示されません。
f 精度は表示される小数点以下の桁数を指定します。小数点がある場合、少なくとも1桁が小数点の前にあります。値は適切な桁数に丸め込まれます。 デフォルト精度は6です。精度0、ピリオド(.)以下に数値が無い場合は小数点が表示されません。
g, G 精度は表示される有効桁数の最大値を指定します。 有効桁6桁で表示され、末尾のゼロは切り捨てられます。
s 精度は表示される最大文字数を指定します。精度を超える文字は表示されません。 NULL文字に到達するまでの文字が表示されます。

 

関連

なし。

 


$n =  43951789;
$u = -43951789;

; %%に注意。'%'として表示される
printf("%%d = '%d'\n", $n);             '43951789'          標準の整数表記
printf("%%e = '%e'\n", $n);             '4.395179e+007'    科学表記
printf("%%u = '%u'\n", $n);             '43951789'          正の整数の符号なし整数表記
printf("%%u <0 = '%u'\n", $u);          '4251015507'        負の整数の符号なし整数表記
printf("%%f = '%f'\n", $n);             '43951789.000000'   浮動小数点表記
printf("%%.2f = '%.2f'\n", $n);         '43951789.00'       小数点以下2桁の浮動小数点表記
printf("%%o = '%o'\n", $n);             '247523255'         8進数表記
printf("%%s = '%s'\n", $n);             '43951789'          文字列表記
printf("%%x = '%x'\n", $n);             '29ea6ad'           16進数表記 (小文字)
printf("%%X = '%X'\n", $n);             '29EA6AD'           16進数表記 (大文字)

printf("%%+d = '%+d'\n", $n);           '+43951789'         符号付きの正の整数
printf("%%+d <0= '%+d'\n", $u);         '-43951789'         符号付きの負の整数


$s = 'monkey';
$t = 'many monkeys';

printf("%%s = [%s]\n",      $s);        [monkey]            標準の文字列出力
printf("%%10s = [%10s]\n",    $s);      [    monkey]        スペース付き右寄せ
printf("%%-10s = [%-10s]\n",   $s);     [monkey    ]        スペース付き左寄せ
printf("%%010s = [%010s]\n",   $s);     [0000monkey]        文字列もゼロ埋めできる
printf("%%10.10s = [%10.10s]\n", $t);   [many monke]        左寄せ。ただし10文字まで

printf("%04d-%02d-%02d\n", 2008, 4, 1);

Func Printf($format, $var1, $var2=-1, $var3=-1)
    If $var2=-1 Then
        ConsoleWrite(StringFormat($format, $var1))
    Else
        ConsoleWrite(StringFormat($format, $var1, $var2, $var3))
    EndIf   
EndFunc