lunes, noviembre 06, 2006

Filtro de palabras para C# - Eliminación de signos de puntuación, tildes, ...

Éste es un método muy útil para tratar cadenas antes de almacenarlas en cualquier tipo de coleción, ya que nos ahorrará muchos problemas a la hora de recuperarlas y trabajar con ellas. Ésta es una versión muy simple pero muy fácil de modificar.

//función para filtrar la palabra y dejarla lista para tratarla
//devuelve la palabra filtrada o null en caso de que no pase el filtro
public string filtro(string palabra){

//eliminamos palabras de un caracter solo
if (palabra.Length == 1) return null;

string aux=palabra;
//eliminamos caracteres que nos puedan estorbar
char[] simbolos = new char[6];
simbolos.SetValue(',',0);
simbolos.SetValue(';',1);
simbolos.SetValue('.',2);
simbolos.SetValue(':',3);
simbolos.SetValue('-',4);
simbolos.SetValue('_',5);
aux=aux.Trim(simbolos);
//pasamos a minusculas
aux=aux.ToLower();

return aux;
}


//claves: filtro palabras c# sharp eliminar caracteres signos puntuacion

2 comentarios:

Jcl dijo...

Tu función solo elimina los simbolos de puntuación del principio y del final de la palabra. Y no entiendo el por qué pasarla a minusculas a menos que estes haciendo un parser case-insensitive.

Como código no es efectivo, ni corto, ni tiene ningun sentido como "snippet" genérico (si a ti te vale para algo que estés haciendo tu, no lo pongo en duda).

Si quieres hacerlo más corto:

string aux = palabra.Trim((string)(",;._-:").ToCharArray()).toLower();

pedromateo dijo...

es una funcion simple y la utilizo para limpiar palabras para poder pasarlas a un corrector ortográfico.
la forma de hacerla en varios pasos también es para que se vea más o menos como se va haciendo, sobre todo si no tienes mucha experiencia.
sólo es un ejemplo, pero gracias por tu aclaración, por lo menos te has molestado en ofrecer una forma alternativa de hacerlo.

un saludo