ใช้ฟังก์ชั่นฟังก์ชั่น SprintF/PRINTF ที่มีอยู่ในภาษาส่วนใหญ่ภายใต้ JavaScript
http://www.webtoolkit.info/javascript-sprintf.html: การจำลองฟังก์ชัน Sprintf ค่อนข้างสมบูรณ์ WildCards ที่จัดรูปแบบ:
1. %% - กลับไปที่เครื่องหมายเปอร์เซ็นต์เอง
2.%B - เลขฐานสอง
3.%C - อักขระที่สอดคล้องกันของ ASCII
4.%D - จำนวนเต็ม
5.%F - หมายเลขจุดลอยตัว
6.%O - หมายเลขแปด
7.%s - สตริง
8.%x - เลขฐานสิบหก (แบบฟอร์มตัวอักษรตัวพิมพ์เล็ก)
9.%x - ตัวเลขเลขฐานสิบหก (แบบฟอร์มตัวอักษร capsular)
ตัวเลือกที่มีอยู่ระหว่างป้าย % และอักขระไวด์การ์ดรวมถึง (ตัวอย่างเช่น % .2F):
1. + (บังคับให้ + และ - สัญลักษณ์ที่จะแสดงต่อหน้าตัวเลขเป็นตัวเลขบวกและลบโดยค่าเริ่มต้นตัวเลขเชิงลบเท่านั้นที่จะแสดงใน - สัญลักษณ์)
2.- (ตัวแปรซ้ายจัดเรียง)
3.0 (ใช้ 0 เป็นอักขระช่องว่างด้านขวา)
4. [0-9] (ตั้งค่าความกว้างขั้นต่ำของตัวแปร)
5 .. [0-9] (ตั้งค่าความแม่นยำของจุดลอยตัวหรือความยาวของสตริง)
การคัดลอกรหัสมีดังนี้:
-
-
* JavaScript Sprintf
* http://www.webtoolkit.info/
-
-
-
sprintfwrapper = {
init: function () {
if (typeof arguments == "undefined") {return null; -
if (arguments.length <1) {return null; -
if (typeof อาร์กิวเมนต์ [0]! = "string") {return null; -
if (typeof regexp == "undefined") {return null; -
var string = อาร์กิวเมนต์ [0];
var exp = ใหม่ regexp (/(%([%] | (/-)? (/+|/x20)? (0)? (/d+)? (/. (/d)?)? ([bcdfosxx])))/g);
การจับคู่ var = new Array ();
var strings = new Array ();
var convcount = 0;
var stringposstart = 0;
var stringposend = 0;
var matchPosend = 0;
var newstring = '';
การจับคู่ var = null;
ในขณะที่ (match = exp.exec (สตริง)) {
if (จับคู่ [9]) {convcount += 1; -
StringPosStart = MatchPosend;
stringposend = exp.lastindex - จับคู่ [0] .length;
สตริง [strings.length] = string.substring (Stringposstart, StringPosend);
matchPosend = exp.lastindex;
จับคู่ [matches.length] = {
จับคู่: จับคู่ [0]
ซ้าย: จับคู่ [3]? จริง: เท็จ
Sign: Match [4] || -
PAD: จับคู่ [5] || -
ขั้นต่ำ: จับคู่ [6] || 0,
ความแม่นยำ: จับคู่ [8],
รหัส: จับคู่ [9] || -
ลบ: ParseInt (อาร์กิวเมนต์ [convcount]) <0? จริง: เท็จ
อาร์กิวเมนต์: สตริง (อาร์กิวเมนต์ [Convcount])
-
-
สตริง [strings.length] = string.substring (matchposend);
if (matches.length == 0) {return string; -
if ((arguments.length - 1) <convcount) {return null; -
รหัส var = null;
การจับคู่ var = null;
var i = null;
สำหรับ (i = 0; i <matches.length; i ++) {
if (ตรงกับ [i] .code == '%') {การแทนที่ = '%'}
อื่นถ้า (ตรงกับ [i] .code == 'b') {
จับคู่ [i] .Argument = String (Math.Abs (ParseInt (จับคู่ [i] .Argument)). TOSTRING (2));
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i], true);
-
อื่นถ้า (ตรงกับ [i] .code == 'c') {
จับคู่ [i] .Argument = String (String.FromCharcode (ParseInt (Math.Abs (ParseInt (จับคู่ [i] .Argument))))));
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i], true);
-
อื่นถ้า (ตรงกับ [i] .code == 'd') {
จับคู่ [i] .Argument = String (Math.Abs (ParseInt (จับคู่ [i] .Argument)));
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i]);
-
อื่นถ้า (ตรงกับ [i] .code == 'f') {
จับคู่ [i] .Argument = String (Math.Abs (parsefloat (จับคู่ [i] .Argument)). tofixed (จับคู่ [i]. pecision? จับคู่ [i]. precision: 6));
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i]);
-
อื่นถ้า (ตรงกับ [i] .code == 'o') {
จับคู่ [i] .Argument = String (Math.Abs (ParseInt (จับคู่ [i] .Argument)). TOSTRING (8));
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i]);
-
อื่นถ้า (ตรงกับ [i] .code == 's') {
จับคู่ [i] .Argument = Matches [i] .Argument.SubString (0, Matches [i]. ความไม่แน่นอน?
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i], true);
-
อื่นถ้า (ตรงกับ [i] .code == 'x') {
จับคู่ [i] .Argument = String (Math.Abs (ParseInt (จับคู่ [i] .Argument)). TOSTRING (16));
การแทนที่ = sprintfwrapper.convert (ตรงกับ [i]);
-
อื่นถ้า (ตรงกับ [i] .code == 'x') {
จับคู่ [i] .Argument = String (Math.Abs (ParseInt (จับคู่ [i] .Argument)). TOSTRING (16));
การแทนที่ = sprintfwrapper.convert (จับคู่ [i]). touppercase ();
-
อื่น {
การทดแทน = การจับคู่ [i]. -match;
-
Newstring += strings [i];
Newstring += การทดแทน;
-
Newstring += strings [i];
return newstring;
-
แปลง: ฟังก์ชั่น (จับคู่, nosign) {
ถ้า (nosign) {
Match.sign = '';
} อื่น {
match.sign = match.negative? '-': match.sign;
-
var l = match.min - match.argument.length + 1 - match.sign.length;
var pad = อาร์เรย์ใหม่ (l <0? 0: l) .join (match.pad);
if (! match.left) {
if (match.pad == "0" || nosign) {
Return match.sign + pad + match.argument;
} อื่น {
return pad + match.sign + match.argument;
-
} อื่น {
if (match.pad == "0" || nosign) {
return match.sign + match.argument + pad.replace (/0/g, '');
} อื่น {
Return match.sign + match.argument + pad;
-
-
-
-
sprintf = sprintfwrapper.init;
หากคุณต้องการแทนที่เนื้อหาของตัวแปรตำแหน่งโดยไม่ต้องจัดรูปแบบเพิ่มเติมคุณสามารถใช้ printf ที่ให้ไว้ในเครื่องมือ Yui ที่ง่ายกว่า:
การคัดลอกรหัสมีดังนี้:
yahoo.tools.printf = function () {
var num = อาร์กิวเมนต์ความยาว;
var OSTR = อาร์กิวเมนต์ [0];
สำหรับ (var i = 1; i <num; i ++) {
var pattern = "// {" + (i-1) + "//}";
var re = ใหม่ regexp (รูปแบบ, "g");
OSTR = OSTR.REPLACE (อีกครั้ง, อาร์กิวเมนต์ [i]);
-
คืน OSTR;
-
เมื่อใช้งานให้ใช้ {?} เพื่อจับคู่