Pot.Format.sprintf

{String} Pot.Format.sprintf ({String} format [, {*} ...args [, {*} ...args1 [, ...]]])

Pot.js で利用可能。 PotLite.js では利用できません。

フォーマットされた文字列を返します。

フォーマット文字列 format に基づき生成された文字列を返します。
フォーマット文字列は 0 個以上のディレクティブ (指示子) により構成されます。
ディレクティブには、そのまま結果にコピーされる (% を除く) 通常の文字と
変換指定子 (conversion specifications) があり、取り出される際は
どちらもそれ自身がパラメータとなります。

各変換指定子は、パーセント記号 (%) の後に、以下の要素が一つ以上続いたものになります。

  1. オプションの 符号指定子
    これは、数値で符号 (- または +) を使用するよう指定します。
    デフォルトでは、数値が負の場合の - 符号のみが使用されます。
    この指定子により、正の数にも強制的に + 符号をつけることができます。
  2. オプションの パディング指定子
    これは、文字列が正しい長さになるまで
    どんな文字で埋めるかということを指定します。
    これは空白かまたは 0 (文字 '0') のいずれかです。
    デフォルトでは空白で埋められます。
    これ以外のパディング文字を指定するには、
    その文字の前に 単一引用符 (') を置きます。
  3. オプションの アラインメント指定子
    これは、結果を左寄せまたは右寄せにしたい場合に指定します。
    デフォルトは右寄せです。ここで - 文字を指定すると左寄せとなります。
  4. オプションの数字。
    これは 表示幅指定子 です。
    結果を (最低) 何桁にするかを指定します。
  5. オプションの 精度指定子 (ピリオド (.) に続けてオプションで桁数指定文字列を書いたもの)。
    これは、浮動小数点数に対して数字を何桁まで表示するかを指定します。
    文字列に対して使用した場合は、これは切り捨て位置として働きます。
    この文字数を超える文字を切り捨てられます。
  6. 型指定子
    引数を何の型として扱うかを指定します。以下が指定できる型です。
    • % - パーセント文字。引数は不要です。
    • b - 引数を整数として扱い、2 進数として表現します。
    • c - 引数を整数として扱い、その charCode 値の文字 (Unicode) として表現します。
    • d - 引数を整数として扱い、10 進数として表現します。
    • e - 引数を科学記法として扱います (例: 1.2e+2)。
    • u - 引数を整数として扱い、符号無しの 10 進数として表現します。
    • f - 引数を浮動小数点数として表現します。
    • o - 引数を整数として扱い、8 進数として表現します。
    • s - 引数を文字列として扱い、表現します。
    • x - 引数を整数として扱い、16 進数として (小文字で) 表現します。
    • X - 引数を整数として扱い、16 進数として (大文字で) 表現します。
    • a - 引数を整数として扱い、36 進数として (小文字で) 表現します。
    • A - 引数を整数として扱い、36 進数として (大文字で) 表現します。
    • n - 引数を数値として扱い、3 桁区切りの数字として表現します。

Pot.globalize() が適応されている場合、Pot.sprintf() が sprintf() で実行できます。

フォーマットされた文字列が返ります。

var num = 5;
var place = 'tree';

var result = sprintf('There are %d monkeys in the %s.', num, place);

debug(result); // 'There are 5 monkeys in the tree.'
var n =  43951789;
var u = -43951789;
var c = 65; // ASCII コードの 65 は 'A' です

// %% は、リテラル '%' を文字として出力します
debug(sprintf("%%b = '%b'", n));   // 2 進表現
debug(sprintf("%%c = '%c'", c));   // 文字 (Unicode) を表示します
debug(sprintf("%%d = '%d'", n));   // 標準の整数表現
debug(sprintf("%%e = '%e'", n));   // 科学記法
debug(sprintf("%%u = '%u'", n));   // 正の整数の、符号なし整数表現
debug(sprintf("%%u = '%u'", u));   // 負の整数の、符号なし整数表現
debug(sprintf("%%f = '%f'", n));   // 浮動小数点表現
debug(sprintf("%%o = '%o'", n));   // 8 進表現
debug(sprintf("%%s = '%s'", n));   // 文字列表現
debug(sprintf("%%x = '%x'", n));   // 16 進表現 (小文字)
debug(sprintf("%%X = '%X'", n));   // 16 進表現 (大文字)
debug(sprintf("%%+d = '%+d'", n)); // 正の整数に符号指定子を使用
debug(sprintf("%%+d = '%+d'", u)); // 負の整数に符号指定子を使用
debug(sprintf("%%a = '%a'", n));   // 36 進表現 (小文字)
debug(sprintf("%%A = '%A'", n));   // 36 進表現 (大文字)
//
// 以下の結果になります
//
//   %b = '10100111101010011010101101'
//   %c = 'A'
//   %d = '43951789'
//   %e = '4.395179e+7'
//   %u = '43951789'
//   %u = '4251015507'
//   %f = '43951789.000000'
//   %o = '247523255'
//   %s = '43951789'
//   %x = '29ea6ad'
//   %X = '29EA6AD'
//   %+d = '+43951789'
//   %+d = '-43951789'
//   %a = 'q61f1'
//   %A = 'Q61F1'
//
var date  = new Date();
var year  = date.getFullYear();
var month = date.getMonth() + 1;
var day   = date.getDate();
var isoDate = Pot.sprintf('%04d-%02d-%02d', year, month, day);

debug(isoDate); // e.g. '2011-09-01'
var s = 'monkey';
var t = 'many monkeys';

debug(sprintf("[%s]",      s)); // 標準の文字列出力
debug(sprintf("[%10s]",    s)); // 空白を使用して右詰め
debug(sprintf("[%-10s]",   s)); // 空白を使用して左詰め
debug(sprintf("[%010s]",   s)); // ゼロ埋めは文字列でも可能です
debug(sprintf("[%'#10s]",  s)); // ゼロの代わりに独自の文字 '#' で埋めます
debug(sprintf("[%10.10s]", t)); // 左詰めを行い、10 文字以上は切り捨てます
//
// 以下の結果になります
//
//   [monkey]
//   [    monkey]
//   [monkey    ]
//   [0000monkey]
//   [####monkey]
//   [many monke]
//
Pot.debug(Pot.sprintf('%n', 1234567890)); // 1,234,567,890
Pot.debug(Pot.sprintf('%n', 12345678.9)); // 12,345,678.9
Pot.debug(Pot.sprintf('%n', 123));        // 123