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.

Etiquetas: , , ,

Esta entrada fue escrita el Jueves 12 de Junio de 2008 a las 4:21 am y está archivada en la categoría Blog. Puedes seguir las respuestas y comentarios en el feed RSS 2.0. Puedes dejar un comentario, o dejar un trackback desde tu propia página.

2 comentarios en “Eliminar múltiples espacios en blanco con una expresión regular”

  1. [...] 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 [...]

  2. hattory zeth pasó por aquí el Viernes 23 de Julio de 2010 a las 8:40 pm, y escribió:

    Super me sirvió a la perfección.

    Saludos

Deja tu comentario