Pot.js で利用可能。 PotLite.js では利用できません。
フォーマットされた文字列を返します。
フォーマット文字列 format に基づき生成された文字列を返します。
フォーマット文字列は 0 個以上のディレクティブ (指示子) により構成されます。
ディレクティブには、そのまま結果にコピーされる (% を除く) 通常の文字と
変換指定子 (conversion specifications) があり、取り出される際は
どちらもそれ自身がパラメータとなります。
各変換指定子は、パーセント記号 (%) の後に、以下の要素が一つ以上続いたものになります。
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