Funcion sprintf en Javascript
La función sprintf o printf es una de las funciones mas conocidas en la programación para el formato de cadenas. Y es que su uso puede ser de gran beneficio (dependiendo el caso) ya que nos puede ayudar entre otras cosas a mejorar la seguridad de nuestros programas (Andrés nos habla mas al respecto). Pues a Jan Moesen se le ha ocurrido la idea de portar la función sprintf a javascript basándose en la función sprintf de PHP.
sprintf() en javascript
-
function sprintf()
-
{
-
if (!arguments || arguments.length < 1 || !RegExp)
-
{
-
return;
-
}
-
var str = arguments[0];
-
var re = /([^%]*)%(‘.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
-
var a = b = [], numSubstitutions = 0, numMatches = 0;
-
while (a = re.exec(str))
-
{
-
var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
-
var pPrecision = a[5], pType = a[6], rightPart = a[7];
-
-
//alert(a + ‘\n‘ + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);
-
numMatches++;
-
if (pType == ‘%‘)
-
{
-
subst = ‘%‘;
-
}
-
else
-
{
-
numSubstitutions++;
-
if (numSubstitutions >= arguments.length)
-
{
-
alert(’Error! Not enough function arguments (‘ + (arguments.length - 1) + ‘, excluding the string)\nfor the number of substitution parameters in string (‘ + numSubstitutions + ‘ so far).‘);
-
}
-
var param = arguments[numSubstitutions];
-
var pad = ‘‘;
-
if (pPad && pPad.substr(0,1) == "’“) pad = leftpart.substr(1,1);
-
else if (pPad) pad = pPad;
-
var justifyRight = true;
-
if (pJustify && pJustify === “-“) justifyRight = false;
-
var minLength = -1;
-
if (pMinLength) minLength = parseInt(pMinLength);
-
var precision = -1;
-
if (pPrecision && pType == ‘f’) precision = parseInt(pPrecision.substring(1));
-
var subst = param;
-
if (pType == ‘b’) subst = parseInt(param).toString(2);
-
else if (pType == ‘c’) subst = String.fromCharCode(parseInt(param));
-
else if (pType == ‘d’) subst = parseInt(param) ? parseInt(param) : 0;
-
else if (pType == ‘u’) subst = Math.abs(param);
-
else if (pType == ‘f’) subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
-
else if (pType == ‘o’) subst = parseInt(param).toString(8);
-
else if (pType == ’s’) subst = param;
-
else if (pType == ‘x’) subst = (” + parseInt(param).toString(16)).toLowerCase();
-
else if (pType == ‘X’) subst = (” + parseInt(param).toString(16)).toUpperCase();
-
}
-
str = leftpart + subst + rightPart;
-
}
-
return str;
-
}
Utilización:
-
var input = “‘30′ -> decimal: %d / bin = %b / oct = %o / hex = %x / HEX = %X”;
-
var output = sprintf(input, 30, 30, 30, 30, 30);
Enlace: sprintf and printf in Javascript
Vía: aNieto2k
¿Te pareció interesante la nota?, registrate a nuestro Feed para que estes al dia con las últimas notas que publicamos en WebAdictos, tambien te invitamos a explorar nuestros archivos tal vez encuentres notas y recursos que te sean de utilidad.
Si lo prefieres puedes utilizar el botón de post aleatorio para ir saltando entre nuestros contenidos.
Gracias por visitarnos.
Vemos que esta utilizando Internet Explorer como navegador.




