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.
Etiquetas: .Net, C#, optimización, programación
[...] con el tema con el que estaba el otro día, cambiando código obsoleto por cosas más legibles y/o más rápidas. Las expresiones regulares [...]
Super me sirvió a la perfección.
Saludos