El AppendFormat() del StringBuilder y string.Format()

Como ya se ha comentado en otros artículos como El StringBuilder, en el mundo de la programación Web, es muy común trabajar con largas cadenas de texto.

Ya sabemos que el StringBuilder es el mejor modo de concatenar mucho texto, ya que la concatenación de varios strings queda descartada tras la Prueba de eficiencia: StringBuilder vs. Concatenación de Strings.

Pero no sólo de eficiencia vive la programación Web, también hay que hacer énfasis tanto en el mantenimiento interno de nuestra web como de nuestra comodidad a la hora de programar.

Y el AppendFormat() del StringBuilder es una mejora muy sustanciosa. Veamos un simple ejemplo.

Imaginemos que queremos crear una frase con varias variables:

ejemploPesado.aspx
        StringBuilder sb = new StringBuilder();
        string nombre1 = "Samuel Etoo";
        int goles1 = 24;
        string nombre2 = "David Villa";
        int goles2 = 23;

        sb.Append("El jugador del Barça, " + nombre1 + ", ha marcado " + goles1);
        sb.Append(" goles, mientras que " + nombre2 + " ha marcado " + goles2 - goles1);
        sb.Append(" " + goles2 > goles1 ? "más" : "menos");



Vemos que a la hora de construir la frase, se mezclan variables y texto literal, de modo que llega a ser bastante lioso.
Ahora veremos la misma versión de nuestro pequeño algoritmo utilizando el AppendFormat del StringBuilder:

ejemploSencillo.aspx
        StringBuilder sb = new StringBuilder();
        string nombre1 = "Samuel Etoo";
        int goles1 = 24;
        string nombre2 = "David Villa";
        int goles2 = 23;

        sb.AppendFormat("El jugador del Barça, {0} ha marcado {1} goles", nombre1, goles1);
        sb.AppendFormat(", mientras que {0} ha marcado {1} {2}", nombre2, goles2 - goles1, goles2 > goles1 ? "más" : "menos");


Vemos que es una versión mucho más agradable a la vista, y por tanto ayuda a nuestra comodidad y al mantenimiento de nuestra aplicación.

Por otra parte el uso del AppendFormat es muy sencillo, y se entiende sólo con ver el ejemplo. No hay más que poner un número entre llaves, y ahí se colocará la variable correspondiente empezando desde la siguiente coma a nuestro string.

Por otra parte, si no nos es necesario utilizar el StringBuilder, podemos hacer lo mismo con string.Format(), de un modo muy similar:

ejemploConString.aspx
       string texto = "Hola mundo";
       string mensaje = string.Format("El {0} es el primer ejemplo típico en programación", texto);


Feliz código