Share via


Realizar cambios de mayúsculas y minúsculas que no tienen en cuenta las referencias culturales

Los métodos String.ToUpper, String.ToLower, Char.ToUpper, y Char.ToLower proporcionan sobrecargas que no aceptan ningún parámetro. De manera predeterminada, estas sobrecargas sin parámetros realizan cambios de mayúsculas y minúsculas basándose en el valor de CultureInfo.CurrentCulture. Esto produce resultados que tienen en cuenta las mayúsculas y minúsculas y que pueden cambiar en función de la referencia cultural. Para aclarar si desea cambios de mayúsculas y minúsculas que tengan en cuenta las referencias culturales o que no las tengan en cuenta, debería utilizar las sobrecargas de esos métodos que requieren la especificación explícita de un parámetro de referencia cultural. Para los cambios de mayúsculas y minúsculas que tienen en cuenta las referencias culturales, especifique CultureInfo.CurrentCulture para el parámetro de referencia cultural. Para los cambios de mayúsculas y minúsculas que no tienen en cuenta las referencias culturales, especifique CultureInfo.InvariantCulture para el parámetro de referencia cultural.

A menudo, las cadenas se convierten a un uso estándar de mayúsculas y minúsculas, para permitir una búsqueda más fácil posteriormente. Cuando se utilizan las cadenas de este modo, se debería especificar CultureInfo.InvariantCulture para el parámetro de referencia cultural, ya que el valor de Thread.CurrentCulture puede cambiar potencialmente desde que se hacen los cambios de mayúsculas y minúsculas hasta que se hace la búsqueda.

Si una decisión de seguridad se basa en una operación de cambio de mayúsculas y minúsculas, la operación no debería tener en cuenta las referencias culturales para asegurarse de que el resultado no se vea afectado por el valor de CultureInfo.CurrentCulture. Vea Asignaciones personalizadas de mayúsculas y minúsculas, y reglas de ordenación para obtener un ejemplo que muestra cómo las operaciones de cadenas que tienen en cuenta las mayúsculas y minúsculas pueden generar resultados incoherentes.

Utilizar los métodos String.ToUpper y String.ToLower

Para lograr claridad en el código, se recomienda usar siempre sobrecargas de los métodos String.ToUpper y String.ToLower, que permiten especificar explícitamente un parámetro de referencia cultural. Por ejemplo, en el siguiente código se realiza la búsqueda de un identificador. La operación key.ToLower tiene en cuenta las referencias culturales de manera predeterminada, pero este comportamiento no está claro leyendo el código.

Ejemplo

Shared Function LookupKey(key As String) As Object
   Return internalHashtable(key.ToLower())
End Function
static object LookupKey(string key) 
{
    return internalHashtable[key.ToLower()];
}

Si desea que la operación key.ToLower tenga en cuenta las referencias culturales debería cambiar el ejemplo anterior como sigue, para utilizar CultureInfo.InvariantCulture al hacer cambios de mayúsculas y minúsculas.

Shared Function LookupKey(key As String) As Object
    Return internalHashtable(key.ToLower(CultureInfo.InvariantCulture))
End Function
static object LookupKey(string key) 
{
    return internalHashtable[key.ToLower(CultureInfo.InvariantCulture)];
}

Utilizar los métodos Char.ToUpper y Char.ToLower

Aunque los métodos Char.ToUpper y Char.ToLower tienen las mismas características que los métodos String.ToUpper y String.ToLower, las únicas referencias culturales afectadas son tr-TR para turco (Turquía) y az-Latn-AZ para azerí (Latín, Azerbaiyán). Estas son las dos únicas referencias culturales con diferencias de mayúsculas y minúsculas en un solo carácter. Para obtener más detalles sobre esta forma única de asignación de mayúsculas y minúsculas, vea Asignaciones personalizadas de mayúsculas y minúsculas, y reglas de ordenación. Para lograr claridad en el código y asegurar resultados coherentes, se recomienda usar siempre sobrecargas de estos métodos que permitan especificar explícitamente un parámetro de referencia cultural.

Vea también

Referencia

String.ToUpper Method
String.ToLower Method
Char.ToUpper Method
Char.ToLower Method

Otros recursos

Realizar operaciones de cadenas que no distinguen entre referencias culturales