Saltar al contenido

C# string comparación ignorando espacios, retorno de carro o saltos de línea

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.