Entradas etiquetadas como ‘optimización’

Escrito por Iván Alonso el Jueves 12 de Junio de 2008

Estoy reescribiendo una librería bastante desactualizada, en la que aparentemente han metido mano muchas personas diferentes. Se manejan una serie de strings que hay que “estandarizar” antes de comprobar si son válidos o no, y uno de los métodos que estaban implementados era:

/// <summary>
/// Función auxiliar que se le pasa una cadena y elimina todos los caracteres
/// blancos duplicados entre palabras.
/// </summary>
static public string EliminaBlancos(string cadena);

El código era un horrendo bucle que iba buscando sucesivas apariciones de dobles espacios y… en fin (y usando strings en lugar de StringBuilder, por si fuera poco). Obviamente este tipo de cosas pueden hacerse bastante rápido con expresiones regulares, pero como nunca suelo utilizarlas he tardado un rato en recordar cómo iban, así que aquí lo dejo apuntado por si es útil para alguien:

output = Regex.Replace(input, @"\s+", " ");

Y hemos cambiado trece líneas del código original por sólo una.

\s detecta espacios en blanco (dependiendo del motor de expresiones regulares, suele ser blancos, tabuladores y saltos de línea por ejemplo).

+ indica que hay una o más repeticiones del elemento precedente.

Recordad que la clase Regex está en:

using System.Text.RegularExpressions;

Más información en la wikipedia, claro.