René Pacios

/* Overflow My Brain & More */

String.Format en JavaScript

javascript[1]

Ya hace algún tiempo que no escribo nada en el blog, la verdad es que últimamente entre el trabajo y un curso de desarrollo para Windows 8 que estoy haciendo pues la verdad que no me queda mucho tiempo para bloguear. Por otro lado me propuse escribir al menos una entrada a la semana cuando monté el blog, así que esta va a ser un poco cortita.

Cuando estamos trabajando con cadenas en .NET o Java sabemos que la concatenación de Strings es un tema algo delicado respecto al rendimiento, ya que la clase String es de tipo inmutable y no permite su modificación, por lo cual cuando hacemos una concatenación con el operador + (o & en VB) lo que estamos es instanciando una nueva clase String almacenando en ella la cadena resultante de la operación.

Es por ello que es altamente recomendable utilizar StringBuilder o Format de la clase String. Si os interesa indagar un poco más sobre el tema existen multitud de post muy interesantes en la red con pruebas donde demuestran la diferencia de rendimiento entre los dos métodos.

Personalmente la función format tiene una sintaxis que me resulta muy cómoda, sólo basta con especificar él índice del argumento entre llaves en la parte del texto donde se desea insertar su valor y evidentemente especificar dicho argumento. Veamos un ejemplo:

String.format("La casa de {0} está en {1}",persona.nombre,persona.ciudad)

No os recuerda a algo?… su comportamiento es muy similar a la printf (printFormat) del clásico C aunque aquí no es necesario indicar el tipo de dato a mostrar (%c %d…) . Otra cosa a destacar es que los modificadores del texto también admiten máscaras por si queremos formatear una fecha, números, etc.

Después de todo este churro metámonos un poco en harina, el objetivo era crear una función similar en JavaScript, y me ha quedado algo tan sencillo como esto:

String.format = function (str) {
    for (var i = 1; i < arguments.length; i++) {
        str = str.replace('{' + (i - 1) + '}', arguments[i]);
    }
    return str;
};

 

Como podéis ver hemos añadido una nueva función al objeto String que realiza la misma funcionalidad (valga la redundancia) que la propia de .NET o Java.

Para probarla solo debemos escribir esto la consola de nuestro navegador, por ejemplo:

var a=String.format("La suma de {0} + {1} es {2}",1,5,(1+6))
console.log(a)

 

Espero que os sea de utilidad.

Nos leemos, René Pacios.

Acerca de René

René Pacios es un apasionado de la tecnología, autodidacta, emprendedor, le encanta el desarrollo web, para moviles, aplicaciones, todo aquello que automatice tareas y haga que las máquinas trabajen para él. Es un gran fan de las tecnologías Microsoft, y le encanta estar a la última siempre que el tiempo se lo permite. Siempre quiso ser cantante, pero creo que en esta vida se va a quedar sólo en canta-mañanas

               
Loading