Curso Principiante: La concatenación

La concatenación: ¿Qué es?

Concatenar es poner algo uno tras otro, en programación, concatenamos palabras, cadenas como esto:

string maValeur = "Mi Valor 1";
maValeur = maValeur + ", Mi Valor 2";
maValeur = maValeur + ", Mi Valor 3";

//Lo que da:
//Mi Valor 1,Mi Valor 2,Mi Valor 3

Entonces es muy bien cuando solo tenemos una pequeña concatenación, pero cuando hacemos un bucle como este:

string maValeur = null;
//Un bucle de 100.000 concatenaciones
for(int i=0; i < 100000; i++)
{
    maValeur = maValeur + ",Mi Valor " + i;
}

¡20 segundos y 768 milisegundos! (00:20.768) ¡A EVITAR! ¡Las prestaciones no son en absoluto óptimas!

¿Por qué?

Al utilizar este tipo de concatenación con cadenas, cada vez asignas espacio de memoria para cada cadena añadida, y además si deseas modificar o manipular esta variable, ¡no es nada eficiente! Microsoft sabiendo esto inventó el StringBuilder. String y Builder para construcción de cadenas.

El StringBuilder

El objeto StringBuilder se utiliza de manera muy simple:

StringBuilder maValeur = new StringBuilder();
//Un bucle de 100.000 concatenaciones
for(int i=0; i < 1000000; i++)
{
    maValeur.Append("Mi Valor ").Append(i).Append(",");
}

¡Y Paf! ¡6 milisegundos! (00:00.006)

Como puedes notar, el objeto StringBuilder hace lo mismo pero 1000 veces más rápido y sin consumir demasiada memoria. Solo necesitas usar el método Append.

Además, el StringBuilder permite manipular la cadena como desees:

Método Descripción
StringBuilder.Append Concatena un elemento cadena al final del valor ya contenido en el StringBuilder
StringBuilder.AppendFormat Concatena un elemento cadena al final del valor ya contenido en el StringBuilder pero añadiendo la posibilidad de formatearlo con los índices {x}
StringBuilder.Insert(start, "Valor") Agrega un elemento cadena en una posición precisa del valor ya contenido en el StringBuilder
StringBuilder.Remove(start, longitud) Elimina un número de caracteres en el valor ya contenido del StringBuilder desde una posición precisa hasta cierta longitud.

AppendFormat

Puedes utilizar el StringBuilder de la misma manera que utilizas el string.Format(), así:

StringBuilder maValeur = new StringBuilder();
int maLigne = 1000;
for(int i=0; i < 1000; i++)
{
    maValeur.AppendFormat("Mi Valor {0} es el valor de la línea {1},", i, maLigne);
    maLigne++;
}

Pasa al índice 0 -> i y al índice 1 -> maLigne

Insert

Para insertar precisamente otra cadena en el StringBuilder, nada más fácil:

StringBuilder maValeur = new StringBuilder();
maValeur.Append("Mi perro pasea en el jardín.");
maValeur.Insert(10,"y mi gata ");
maValeur.Insert(33,"nt");

//Resultado: Mi perro y mi gata pasean en el jardín.

Remove

Para eliminar caracteres, siempre igual de simple:

StringBuilder maValeur = new StringBuilder();
maValeur.Append("Mi perro pasea en el jardín.");
maValeur.Insert(10,"y mi gata ");
maValeur.Insert(33,"nt");
maValeur.Remove(35, 15);

//Resultado: Mi perro y mi gata pasean.

Acostúmbrate a usar el StringBuilder en lugar de concatenaciones de cadenas, ¡te ganarás en rendimiento, créeme!

Además, esto ha sido aprobado por Chuck Norris:

 

Aucun commentaire pour le moment.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙