Clase CompareInfo

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

Las convenciones para comparar y ordenar datos varían de la referencia cultural a la referencia cultural. Por ejemplo, el criterio de ordenación puede basarse en fonéticas o en la representación visual de caracteres. En los idiomas de Este de Asia, los caracteres se ordenan teniendo en cuenta los trazos y el radical de los ideogramas. El criterio de ordenación también depende del orden que se emplea en los distintos idiomas y referencias culturales para el alfabeto. Por ejemplo, el idioma danés tiene un carácter "Æ" que se ordena después de la "Z" en el alfabeto. Además, las comparaciones pueden distinguir mayúsculas de minúsculas o distinguir mayúsculas de minúsculas, y las reglas de mayúsculas y minúsculas también pueden diferir según la referencia cultural. La clase CompareInfo es responsable de mantener estos datos de comparación de cadenas sensibles a la referencia cultural y de realizar operaciones de cadena que distinguen la referencia cultural.

Normalmente, no es necesario crear instancias de un objeto CompareInfo directamente, ya que todas las operaciones de comparación de cadenas no ordinales usan implícitamente una, incluidas las llamadas al métodoString.Compare. Sin embargo, si desea recuperar un objeto CompareInfo, puede hacerlo de una de estas maneras:

  • Recuperando el valor de la propiedad CultureInfo.CompareInfopara una referencia cultural determinada.

  • Llamando al método estático con un nombre de referencia cultural GetCompareInfo. Esto permite el acceso enlazado en tiempo de ejecución a un objeto CompareInfo.

Valores de búsqueda omitido

Los juegos de caracteres incluyen caracteres que se pueden pasar por alto, que son los caracteres que no se tienen en cuenta al realizar una comparación lingüística o en la que se tiene en cuenta la referencia cultural. Los métodos de comparación como IndexOf y LastIndexOf no tienen en cuenta estos caracteres cuando realizan una comparación que distingue la referencia cultural. Entre los caracteres que se ignoran se incluyen:

  • String.Empty. Los métodos de comparación que distinguen referencias culturales siempre encontrarán una cadena vacía al principio (índice cero) de la cadena que se busca.

  • Carácter o cadena que consta de caracteres con puntos de código que no se consideran en la operación debido a las opciones de comparación, en particular, las opcionesCompareOptions.IgnoreNonSpace y CompareOptions.IgnoreSymbols producen búsquedas en las que se omiten símbolos y caracteres de combinación sin espaciado.

  • Cadena con puntos de código que no tienen ningún significado lingüístico. Por ejemplo, un guión flexible (U+00AD) siempre se omite en una comparación de cadenas que distingue la referencia cultural.

Consideraciones sobre la seguridad

Si una decisión de seguridad depende de una comparación de cadenas o de un cambio de caso, debe usar la propiedad InvariantCulture para asegurarse de que el comportamiento sea coherente, independientemente de la configuración cultural del sistema operativo.

Nota:

Cuando sea posible, debe usar métodos de comparación de cadenas que tengan un parámetro de tipo CompareOptions para especificar el tipo de comparación esperado. Como regla general, use opciones lingüísticas (mediante la referencia cultural actual) para comparar cadenas mostradas en la interfaz de usuario y especificar Ordinal o OrdinalIgnoreCase para comparaciones de seguridad.