Implemente la función Sprintf/Printf que está disponible en la mayoría de los idiomas en JavaScript.
http://www.webitoolkit.info/javascript-sprintf.html: una simulación relativamente completa de funciones de función SPRINTF. Comodines formateados disponibles:
1. %% - volver al signo porcentual en sí mismo
2.%B - Número binario
3.%C - ASCII CARACTERES CORRESPONDERES
4.%d - entero
5.%F - Número de punto flotante
6.%O - número octal
7.%s - cadena
8.%x - número hexadecimal (formulario de letra minúscula)
9.%x - dígitos hexadecimales (forma de letra capsular)
Las opciones disponibles entre el signo % y los caracteres comodín incluyen (por ejemplo, % .2f):
1. + (forzando los símbolos + y - que se mostrarán frente al número como números positivos y negativos. Por defecto, solo se mostrarán números negativos en el símbolo)
2.- (Variable a la izquierda alineada)
3.0 (use 0 como carácter de relleno alineado a la derecha)
4. [0-9] (establezca el ancho mínimo de la variable)
5 .. [0-9] (establezca la precisión del punto flotante o la longitud de la cadena)
La copia del código es la siguiente:
/**
*
* JavaScript sprintf
* http://www.webitoolkit.info/
*
*
**/
sprintfwrapper = {
init: function () {
if (typeof argumentos == "indefinido") {return null; }
if (argumentos.length <1) {return null; }
if (typeof argumentos [0]! = "cadena") {return null; }
if (typeof regexp == "indefinido") {return null; }
var string = argumentos [0];
var exp = new Regexp (/(%([%] | (/-)? (/+|/x20)? (0)? (/D+)? (/. (/d)?)? ([bcdfosxx]))/g);
var coincides = new array ();
VAR Strings = New Array ();
var convCount = 0;
var stringPosstart = 0;
var stringPosend = 0;
var Matchposend = 0;
var newString = '';
var Match = null;
while (match = exp.exec (string)) {
if (coincidir [9]) {convCount += 1; }
StringPosStart = MatchPosend;
stringPosend = exp.lastIndex - coincidir [0] .length;
Strings [Strings.Length] = String.Substring (StringPosStart, StringPosend);
Matchposend = exp.lastIndex;
Matches [Matches.length] = {
Match: Match [0],
Izquierda: ¿Partido [3]? Verdadero: Falso,
Señal: Partido [4] || '',
Pad: Match [5] || '',
Min: Partido [6] || 0,
Precisión: Match [8],
Código: Match [9] || '%',
negativo: parseint (argumentos [convCount]) <0? Verdadero: Falso,
Argumento: String (argumentos [convCount])
};
}
Strings [Strings.Length] = String.Substring (MatchPosend);
if (coincidir.length == 0) {return String; }
if ((argumentos.length - 1) <convCount) {return null; }
VAR CODE = NULL;
var Match = null;
var i = null;
para (i = 0; i <matches.length; i ++) {
if (coincide [i] .code == '%') {sustitution = '%'}
else if (coincide [i] .code == 'b') {
coinciden [i] .argument = string (math.abs (parseint (coincide [i] .argument)). toString (2));
sustitución = sprintfwrapper.convert (coincidencias [i], true);
}
else if (coincide [i] .code == 'c') {
coinciden [i] .argument = string (string.FromCharCode (parseInt (math.abs (parseInt (coincide [i] .argument))));
sustitución = sprintfwrapper.convert (coincidencias [i], true);
}
else if (coincide [i] .code == 'd') {
coincides [i] .argument = string (math.abs (parseint (coincide [i] .argument)));
sustitución = sprintfwrapper.convert (coincidencias [i]);
}
else if (coincide [i] .code == 'f') {
coincidencias [i] .argument = string (math.abs (parsefloat (coincidencias [i] .argument)). tofixed (coincidencias [i] .precision? coincidentes [i] .precision: 6));
sustitución = sprintfwrapper.convert (coincidencias [i]);
}
else if (coincide [i] .code == 'o') {
coinciden [i] .argument = string (math.abs (parseint (coincide [i] .argument)). toString (8));
sustitución = sprintfwrapper.convert (coincidencias [i]);
}
else if (coincide [i] .code == 's') {
coincidencias [i] .argument = coincidencias [i] .argument.substring (0, coincidencias [i] .precision? coincidentes [i] .precision: coincidencias [i] .argument.length)
sustitución = sprintfwrapper.convert (coincidencias [i], true);
}
else if (coincide [i] .code == 'x') {
coinciden [i] .argument = string (math.abs (parseint (coincide [i] .argument)). toString (16));
sustitución = sprintfwrapper.convert (coincidencias [i]);
}
else if (coincide [i] .code == 'x') {
coinciden [i] .argument = string (math.abs (parseint (coincide [i] .argument)). toString (16));
sustitución = sprintfwrapper.convert (coincidencias [i]). toUpperCase ();
}
demás {
sustitución = coincide [i] .match;
}
Newstring += Strings [i];
Newstring += Sustitución;
}
Newstring += Strings [i];
Return Newstring;
},
convertir: function (coincidente, nosign) {
if (nosign) {
Match.sign = '';
} demás {
Match.Sign = Match.negative? '-': Match.Sign;
}
var l = match.min - match.argument.length + 1 - match.sign.length;
var pad = nueva matriz (l <0? 0: l) .Join (match.pad);
if (! Match.left) {
if (match.pad == "0" || nosign) {
return match.sign + pad + match.argument;
} demás {
Return Pad + Match.Sign + Match.Argument;
}
} demás {
if (match.pad == "0" || nosign) {
return match.sign + match.argument + pad.replace (/0/g, '');
} demás {
return match.sign + match.argument + pad;
}
}
}
}
sprintf = sprintfwrapper.init;
Si solo desea reemplazar el contenido de la variable de posición sin formateo adicional, puede usar el printf proporcionado en las herramientas YUI más simples:
La copia del código es la siguiente:
Yahoo.tools.printf = function () {
var num = argumentos.length;
var ostr = argumentos [0];
para (var i = 1; i <num; i ++) {
Var Pattern = "// {" + (i-1) + "//}";
var re = new regexp (patrón, "g");
ostr = ostr.replace (re, argumentos [i]);
}
return Ostr;
}
Al usarlo, use {?} Para que coincida.