Comparar Strings sin importar Mayúsculas, Minúsculas, Espacios ni Acentos en C#

Muchas veces necesitamos comparar dos Strings para ver si son iguales. Por un lado siempre tenemos el “con qué” comparar, que tenemos asegurada su correcta escritura, pero el otro lado, que puede ser en ocasiones escrito por personas ajenas al código, puede tener diferencias como falta de acentos, mayúsculas de más, falta de espacios, escrito todo en minúsculas…
Una fácil solución es implementar una función a la que le pasamos un string y nos lo devuelve convertido a mayúsculas, sin acentos y sin espacios. De este modo podremos compararlos en las mismas condiciones. La función sería algo así:

private string prepareToCompareString(string s)
{
   Regex replace_a_Accents = new Regex("[á|à|ä|â]", RegexOptions.Compiled);
   Regex replace_e_Accents = new Regex("[é|è|ë|ê]", RegexOptions.Compiled);
   Regex replace_i_Accents = new Regex("[í|ì|ï|î]", RegexOptions.Compiled);
   Regex replace_o_Accents = new Regex("[ó|ò|ö|ô]", RegexOptions.Compiled);
   Regex replace_u_Accents = new Regex("[ú|ù|ü|û]", RegexOptions.Compiled);
   s = replace_a_Accents.Replace(s, "a");
   s = replace_e_Accents.Replace(s, "e");
   s = replace_i_Accents.Replace(s, "i");
   s = replace_o_Accents.Replace(s, "o");
   s = replace_u_Accents.Replace(s, "u");
   s = s.ToUpper().Replace(" ", "");
   return s;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.