Ten en cuenta que en las ciencias un problema casi siempere puede tener más de una resoluciones, de igual modo nosotros te enseñaremos lo más óptimo y mejor.
Solución:
Debes normalizar cada string eliminando los caracteres que no desea comparar y luego puede realizar una String.Equals
con un StringComparison
que ignora el caso.
Algo como esto:
string s1 = "HeLLo wOrld!";
string s2 = "Hellon WORLd!";
string normalized1 = Regex.Replace(s1, @"s", "");
string normalized2 = Regex.Replace(s2, @"s", "");
bool stringEquals = String.Equals(
normalized1,
normalized2,
StringComparison.OrdinalIgnoreCase);
Console.WriteLine(stringEquals);
Aquí Regex.Replace
se usa primero para eliminar todos los espacios en blanco. El caso especial de que ambas cadenas sean null no se trata aquí, pero puede manejar fácilmente ese caso antes de realizar el string normalización.
Esto también puede funcionar.
String.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols) == 0
Editar:
Ignorar Símbolos: Indica que el string la comparación debe ignorar los símbolos, como los espacios en blanco, la puntuación, los símbolos de moneda, el signo de porcentaje, los símbolos matemáticos, el ampersand, etc.
Elimine todos los caracteres que no desee y luego use el método ToLower() para ignorar mayúsculas y minúsculas.
editar: mientras lo anterior funciona, es mejor usar StringComparison.OrdinalIgnoreCase
. Simplemente páselo como el segundo argumento del Equals
método.
Valoraciones y reseñas
Te invitamos a añadir valor a nuestro contenido participando con tu veteranía en las crónicas.