Format

可変数の入力値を、フォーマット文字列に従って整形します。

String := Format(FormatStr , Values...)

パラメータ

FormatStr

型:文字列

{インデックス:フォーマット}という形式のリテラルテキストとプレースホルダからなるフォーマット文字列です。

Indexは、どの入力値を使用するかを示す整数で、1が最初の値です。

Formatは、後述するオプションのフォーマット指定子です。

インデックスを省略すると、(文字列の前のほうで使われていたとしても)シーケンスの次の入力値を使用します。例えば、"{2:i} {:i}"は、2番目と3番目の入力値を、スペースで区切った10進数の整数としてフォーマットします。Indexが省略された場合でも、Formatの前には:が必要です。空の中括弧を指定すると、次の入力値をデフォルトの書式で使用する:{}

文字列の中にリテラルブレースを含めるには、{{}{}}を使用します。それ以外の無効なプレースホルダーは、そのまま結果に含まれます。

中括弧の中の空白は許されない(フラグとして除く)。

型:文字列整数浮動小数点

最終的な文字列に整形して挿入される入力値。各値は独立したパラメータです。最初の値はインデックスが1です。

値の配列を渡すには、variadic function callを使用します:

arr := [13, 240]
MsgBox Format("{2:x}{1:02x}", arr*)

戻り値

型:文字列

この関数は、指定された文字列を整形したものを返す。

フォーマット指定子

各フォーマット指定子は、以下の構成要素をこの順序で含むことができる(空白は除く):

フラグ幅 .精度 ULTタイプ

Flags: Zero or more flags from the flag table below to affect output justification and prefixes.

Width: A decimal integer which controls the minimum width of the formatted value, in characters. デフォルトでは、値は右寄せになり、パディングにはスペースが使用されます。これは、-(左寄せ)および0(ゼロプレフィックス)フラグを使用することで上書きすることができます。

.Precision: A decimal integer which controls the maximum number of string characters, decimal places, or significant digits to output, depending on the output type. その前に必ず小数点が付きます。精度を指定すると、値が切り捨てられたり、丸められたりすることがあります。出力の種類と精度値によるそれぞれの影響は以下の通りです(出力の種類についての説明は下表を参照):

ULT:文字列の値に適用する大文字と小文字の変換を指定する --Upper、Lower、Title。sタイプのみ有効です。例えば{:U}{:.20Ts}のようなものです。小文字のltもサポートされているが、uは符号なし整数用に予約されている。

Type: A character from the type table below indicating how the input value should be interpreted. 省略された場合、デフォルトはsです。

Flags

Flag意味
-

指定されたフィールド幅の範囲内で結果を左寄せにする(必要に応じて右側にスペースを挿入します)。例えば、Format("{:-10}", 1)1 を返します。

省略された場合、結果は与えられたフィールド幅の中で右寄せされます。

+

出力値が符号付きである場合、符号(+または-)を前置詞として使用します。例えば、Format("{:+d}", 1)は、+1を返します。

省略した場合は、負の符号付き値(-)に対してのみ符号が表示されます。

0

widthの前に0を付けると、最小幅に達するまで先頭の0が追加されます。例えば、Format("{:010}", 1)は、0000000001を返します。0-の両方が表示される場合、0は無視されます。整数形式(i, u, x, o, d)として0が指定され、かつ精度指定がある場合(例:{:04.d})、0は無視されます。

省略した場合、パディングは行われない。

出力値が符号付きで正数である場合、スペースを1つ使って前置します。The space is ignored if both and + flags appear. For example, Format("{:05d}", 1) returns 0001.

省略した場合は、スペースが表示されません。

#

o、x、Xフォーマットと併用する場合、#フラグはそれぞれ00x0Xを使用して、0以外の出力値の前に置くようにします。例えば、Format("{:#x}", 1)0x1を返します。

e、E、f、a、Aフォーマットで使用する場合、#フラグは出力値に強制的に小数点を含ませる。例えば、Format("{:#.0f}", 1)1.を返します。

gまたはGフォーマットと併用する場合、#フラグは出力値に小数点以下を強制的に含ませ、末尾のゼロの切り捨てを防止します。

c、d、i、u、s と共に使用する場合は無視されます。

種類

Type CharacterArgumentOutput format
d or i Integer 符号付き10進数整数。例えば、Format("{:d}", 1.23)1を返します。
u Integer 符号なし10進数整数。
x または X Integer 符号なし16進数整数。xのケースによって "abcdef"または "ABCDEF" を使用します。0x{:#x}のように#フラグが使用されていない限り、接頭辞は含まれない。常にプレフィックスを含むようにするには、0x{:x}などを使用します。例えば、Format("{:X}", 255)FFを返します。
o Integer 8進数の符号なし整数。例えば、Format("{:o}", 255)377を返します。
f 浮動小数点 符号付き値で、[ - ]dddd.ddddddddは1桁以上の10進数)の形式を持つ。小数点以下の桁数は数値の大きさに依存し、小数点以下の桁数は要求精度に依存します。例えば、Format("{:.2f}", 1)1.00を返します。
e 浮動小数点 符号付き値で,形式は [ - ]d.dddde[sign]dd[d]ここで,dは小数点以下1桁,ddddは小数点以下1桁以上,dd[d]は出力形式と指数の大きさに応じて小数点以下2桁または3桁,signは + または -.For example, Format("{:e}", 255) returns 2.550000e+02.
E 浮動小数点 eではなくEが指数を導入することを除いて、eフォーマットと同じです。
g 浮動小数点 符号付き値は、fまたはeのフォーマットで表示され、与えられた値と精度に対してよりコンパクトなほうを選択します。e形式は,値の指数が-4未満,または精度引数以上の場合にのみ使用されます。末尾のゼロは切り捨てられ、小数点は1桁以上続く場合のみ表示されます。
G 浮動小数点 g形式と同じ。ただし、e ではなく E が指数(適切な場合)を導入している。
a 浮動小数点 h.hhhhは仮数部の16進数(小文字を使用)、ddは指数部の1桁以上の数字を示す。精度は、ポイント以降の桁数を指定します。For example, Format("{:a}", 255) returns 0x1.fe00000000000p+7.
A 浮動小数点 p ではなく P が指数を示すことを除けば,a形式と同じです。
p Integer 引数をメモリアドレスとして16進数で表示します。For example, Format("{:p}", 255) returns 00000000000000FF.
s String 文字列を指定します。入力値が数値の場合、WidthPrecisionの引数が適用される前に、自動的に文字列に変換されます。
c 文字コード Chr(n)と同様に、1文字をその序列値で指定します。入力値が想定範囲外の場合、折り返す。例えば、Format("{:c}", 116)tを返します。

備考

printfと異なり、サイズ指定子はサポートされていない。整数と浮動小数点の入力値は、すべて64ビットです。

FormatTime

さまざまな使い方を実演します。

s := ""
; 簡単な置換
s .= Format("{2}, {1}!`r`n", "World", "Hello")
; スペースでパディングする
s .= Format("|{:-10}|`r`n|{:10}|`r`n", "Left", "Right")
; 16進数
s .= Format("{1:#x} {2:X} 0x{3:x}`r`n", 3735928559, 195948557, 0)
; 浮動小数点
s .= Format("{1:0.3f} {1:.10f}", 4*ATan(1))

ListVars  ; AutoHotkeyのメインウィンドウで等幅テキストを表示させる。
WinWaitActive "ahk_class AutoHotkey"
ControlSetText(s, "Edit1")
WinWaitClose