Menerapkan fungsi fungsi sprintf/printf yang tersedia di sebagian besar bahasa di bawah JavaScript.
http://www.webtoolkit.info/javascript-sprintf.html: Simulasi fungsi fungsi sprintf yang relatif lengkap. Tersedia Wildcards yang diformat:
1. %% - kembali ke tanda persen itu sendiri
2.%B - Angka biner
3.%C - ASCII Karakter yang sesuai
4.%D - Integer
5.%F - Angka Titik Mengambang
6.%O - Angka oktal
7.%S - String
8.%x - Nomor heksadesimal (bentuk huruf kecil)
9.%x - Digit heksadesimal (bentuk huruf kapsuler)
Opsi yang tersedia antara tanda % dan karakter wildcard termasuk (misalnya, % .2f):
1. + (memaksa simbol + dan - untuk ditampilkan di depan angka sebagai angka positif dan negatif. Secara default, hanya angka negatif yang akan ditampilkan di - simbol)
2.- (variabel kiri disejajarkan)
3.0 (Gunakan 0 sebagai karakter bantalan yang selaras kanan)
4. [0-9] (atur lebar minimum variabel)
5 .. [0-9] (Atur akurasi titik mengambang atau panjang string)
Salinan kode adalah sebagai berikut:
/**
*
* JavaScript Sprintf
* http://www.webtoolkit.info/
*
*
**/
sprintfwrapper = {
init: function () {
if (typeOf argumen == "tidak terdefinisi") {return null; }
if (arguments.length <1) {return null; }
if (typeof argumen [0]! = "string") {return null; }
if (typeOf regexp == "tidak terdefinisi") {return null; }
var string = argumen [0];
var exp = regexp baru (/(%([%] | (/-)? (/+|/x20)? (0)? (/D+)? (/. (/D)?)? ([BCDFOSXX])))/g);
var cocok = array baru ();
var strings = array baru ();
var convcount = 0;
var stringposStart = 0;
var stringposend = 0;
var matchposend = 0;
var newstring = '';
var match = null;
while (match = exp.exec (string)) {
if (cocok [9]) {convcount += 1; }
StringPosStart = MatchPosend;
StringPoSend = exp.LastIndex - Match [0] .length;
string [string.length] = string.substring (StringPosStart, StringPoSend);
MatchPosend = exp.LastIndex;
cocok dengan [matches.length] = {
Pencocokan: Cocokkan [0],
Kiri: Cocokkan [3]? Benar: Salah,
Tanda: Cocokkan [4] || '',
PAD: Cocokkan [5] || '',
Min: Cocokkan [6] || 0,
Presisi: Cocokkan [8],
Kode: Cocokkan [9] || '%',
Negatif: ParseInt (argumen [convcount]) <0? Benar: Salah,
Argumen: String (Argumen [ConvCount])
};
}
string [string.length] = string.substring (MatchPosend);
if (matches.length == 0) {return string; }
if ((arguments.length - 1) <convcount) {return null; }
var code = null;
var match = null;
var i = null;
untuk (i = 0; i <matches.length; i ++) {
if (cocok dengan [i] .code == '%') {substitusi = '%'}
lain jika (cocok [i] .code == 'b') {
cocok dengan [i] .Argument = String (Math.abs (parseInt (cocok [i] .Argument)). Tostring (2));
substitusi = sprintfwrapper.convert (cocok [i], true);
}
lain jika (cocok [i] .code == 'c') {
mencocokkan [i] .Argument = String (String.FromCharCode (parseInt (Math.abs (parseInt (cocok [i] .Argument)))));
substitusi = sprintfwrapper.convert (cocok [i], true);
}
lain jika (cocok [i] .code == 'd') {
cocok dengan [i] .Argument = String (Math.Abs (parseInt (cocok [i] .Argument)));
substitusi = sprintfwrapper.convert (cocok [i]);
}
lain jika (cocok [i] .code == 'f') {
cocok dengan [i] .Argument = String (Math.Abs (parsefloat (cocok [i] .Argument)). ToFixed (cocok [i]. Presisi? Pencocokan [i]. Presisi: 6));
substitusi = sprintfwrapper.convert (cocok [i]);
}
lain jika (cocok [i] .code == 'o') {
cocok dengan [i] .Argument = String (Math.abs (parseInt (cocok [i] .Argument)). Tostring (8));
substitusi = sprintfwrapper.convert (cocok [i]);
}
lain if if (cocok [i] .code == 's') {
Pencocokan [i] .Argument = cocok [i] .Argument.substring (0, cocok [i] .precision? cocok [i]. Presisi: kecocokan [i] .Argument.Length)
substitusi = sprintfwrapper.convert (cocok [i], true);
}
lain jika (cocok [i] .code == 'x') {
cocok dengan [i] .Argument = String (Math.abs (parseInt (cocok [i] .Argument)). Tostring (16));
substitusi = sprintfwrapper.convert (cocok [i]);
}
lain jika (cocok [i] .code == 'x') {
cocok dengan [i] .Argument = String (Math.abs (parseInt (cocok [i] .Argument)). Tostring (16));
substitusi = sprintfwrapper.convert (cocok [i]). Touppercase ();
}
kalau tidak {
substitusi = cocok [i] .match;
}
Newstring += string [i];
Newstring += substitusi;
}
Newstring += string [i];
mengembalikan berita;
},
Convert: function (match, noSign) {
if (noSign) {
Match.sign = '';
} kalau tidak {
match.sign = match.negative? '-': Match.sign;
}
var l = match.min - match.argument.length + 1 - match.sign.length;
var pad = array baru (l <0? 0: l) .join (match.pad);
if (! match.left) {
if (match.pad == "0" || nosign) {
return match.sign + pad + match.argument;
} kalau tidak {
return pad + match.sign + match.argument;
}
} kalau tidak {
if (match.pad == "0" || nosign) {
return match.sign + match.argument + pad.replace (/0/g, '');
} kalau tidak {
return match.sign + match.argument + pad;
}
}
}
}
sprintf = sprintfwrapper.init;
Jika Anda hanya ingin mengganti konten variabel posisi tanpa pemformatan tambahan, Anda dapat menggunakan printf yang disediakan dalam alat YUI yang lebih sederhana:
Salinan kode adalah sebagai berikut:
Yahoo.tools.printf = function () {
var num = argumen.length;
var ostr = argumen [0];
untuk (var i = 1; i <num; i ++) {
var pola = "// {" + (i-1) + "//}";
var re = regexp baru (pola, "g");
ostr = ostr.replace (re, argumen [i]);
}
mengembalikan Ostr;
}
Saat menggunakannya, gunakan {?} Untuk mencocokkannya.