Juanma Santoyo

En ocasiones me llaman friki

Formatear cadenas con placeholders en JavaScript

| 1 Comentario

Normalmente, intento evitar lo máximo posible la concatenación de valores en una cadena. Por ejemplo, no me gusta hacer cosas como esta:

var precioFinal = 'El precio final es de ' + precio + ' ' + moneda;

El motivo es que con este tipo de estructura es fácil cometer un error. No soy muy bueno probando mi código, así que para compensar intento programar siempre de forma que sea difícil cometer errores.

Por lo tanto, cuando se trata de montar cadenas de texto en Java Script solía hacer algo como esto para imitar la funcionalidad String.Format de .Net:

var precioFinal = 'El precio final es de {0} {1}'
     .replace('{0}', precio)
     .replace('{1}', moneda)

Cuando lo hice dos veces me di cuenta de que necesitaba una función. Cuando lo hice veinte veces, hice la maldita función de una vez… ya sabéis cómo es esto.

La idea era simple: usar el array arguments de Javascript para implementar una especie de String.Format. Allá va:

function stringFormat(string)
{
    if(arguments.length > 1)
    {
        for(var i = 1; i < arguments.length; i++)
        {
            var expresion = new RegExp('\{' + (i - 1) + '\}', 'ig');
            string = string.replace(expresion, arguments[i]);
        }
    }

    return string;
}

La función es tan simple como parece. Tan solo busca los placeholders y los reemplaza por su valor correspondiente. Se usaría así:

var precioFinal = stringFormat('El precio final es de {0} {1}', precio, moneda);

Parece una tontería, pero sabiendo que la tengo en el blog ya no me volverá a dar pereza implementarla :D.

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInEmail this to someone

One Comment

  1. Pingback: Formatear cadenas con placeholders en JavaScript (II) | Juanma Santoyo

Deja un comentario

Los campos obligatorios están marcados con *.