visual validar studio primera minusculas mayusculas mayuscula letra importar convertir comparar cadena c# string-comparison case-insensitive

c# - validar - ¿Cómo puedo hacer una comparación de cadenas insensible a mayúsculas y minúsculas?



textbox mayusculas c# (8)

¿Cómo puedo hacer que la línea de abajo no distinga entre mayúsculas y minúsculas?

drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1);

Me dieron algunos consejos hoy que sugirieron que use:

x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));

el problema es que no puedo hacer que esto funcione, he intentado con la línea siguiente, esta compila pero arroja los resultados incorrectos, devuelve a los usuarios inscritos como usuarios no inscritos y no inscritos como inscritos.

drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));

¿Alguien puede señalar el problema?


¿Qué tal si utilizas StringComparison.CurrentCultureIgnoreCase ?


Creo que encontrarás más información en este enlace:

http://codeidol.com/community/dotnet/controlling-case-sensitivity-when-comparing-two-st/8873/

Use el método Compare static en la clase String para comparar las dos cadenas. Si la comparación no distingue entre mayúsculas y minúsculas está determinada por el tercer parámetro de una de sus sobrecargas. Por ejemplo:

string lowerCase = "abc"; string upperCase = "AbC"; int caseInsensitiveResult = string.Compare(lowerCase, upperCase, StringComparison.CurrentCultureIgnoreCase); int caseSensitiveResult = string.Compare(lowerCase, StringComparison.CurrentCulture);

El valor caseSensitiveResult es -1 (lo que indica que lowerCase es "menor que" upperCase) y caseInsensitiveResult es cero (lo que indica que lowerCase "es igual a" upperCase).


Debería usar la función estática String.Compare como sigue

x => String.Compare (x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0


Esta no es la mejor práctica en .NET framework (4 y +) para verificar la igualdad

String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0

Use lo siguiente en su lugar

String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)

MSDN recomienda:

  • Use una sobrecarga del método String.Equals para probar si dos cadenas son iguales.
  • Utilice los métodos String.Compare y String.CompareTo para ordenar cadenas, no para verificar la igualdad .

Otras respuestas son totalmente válidas aquí, pero de alguna manera lleva tiempo StringComparison.OrdinalIgnoreCase y también usar String.Compare .

He codificado el método simple de extensión de cadena, donde puedes especificar si la comparación es sensible a mayúsculas y minúsculas o no tiene sentido con booleano, adjuntando todo el fragmento de código aquí:

using System; /// <summary> /// String helpers. /// </summary> public static class StringExtensions { /// <summary> /// Compares two strings, set ignoreCase to true to ignore case comparison (''A'' == ''a'') /// </summary> public static bool CompareTo(this string strA, string strB, bool ignoreCase) { return String.Compare(strA, strB, ignoreCase) == 0; } }

Después de que toda la comparación se acorta en 10 caracteres aproximadamente, compare:

Antes de usar la extensión de cadena:

String.Compare(testFilename, testToStart,true) != 0

Después de usar la extensión de cadena:

testFilename.CompareTo(testToStart, true)


Por favor use esto para comparar:

string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);


Puede (aunque controversial) extender System.String para proporcionar un método de extensión de comparación que no distingue entre mayúsculas y minúsculas:

public static bool CIEquals(this String a, String b) { return a.Equals(b, StringComparison.CurrentCultureIgnoreCase); }

y uso como tal:

x.Username.CIEquals((string)drUser["Username"]);

C # le permite crear métodos de extensión que pueden servir como sintaxis suggar en su proyecto, bastante útil, diría yo.

No es la respuesta y sé que esta pregunta es vieja y está resuelta, solo quería agregar estos bits.


siempre puedes usar funciones: .ToLower (); .Upper ();

convierte tus cuerdas y luego compáralas ...

Buena suerte