Compartir a través de


Cambio de mayúsculas y minúsculas en .NET

Si escribe una aplicación que acepta la entrada de un usuario, nunca podrá estar seguro de si usará mayúsculas o minúsculas para escribir los datos. Normalmente querrá que las cadenas usen mayúsculas y minúsculas de forma coherente, especialmente si se van a mostrar en la interfaz de usuario. En la tabla siguiente se describen tres métodos para cambiar las mayúsculas y minúsculas. Los dos primeros métodos proporcionan una sobrecarga que acepta una referencia cultural.

Nombre del método Usar
String.ToUpper Convierte todos los caracteres de una cadena a mayúsculas.
String.ToLower Convierte todos los caracteres de una cadena a minúsculas.
TextInfo.ToTitleCase Convierte una cadena a mayúsculas de tipo título.

Advertencia

Los métodos String.ToUpper y String.ToLower no deben usarse para convertir cadenas a fin de compararlas o comprobar su igualdad. Para obtener más información, vea la sección Comparación de cadenas con mayúsculas y minúsculas mezcladas.

Comparación de cadenas con mayúsculas y minúsculas mezcladas

Para comparar cadenas con mayúsculas y minúsculas mezcladas para determinar su orden, llame a una de las sobrecargas del método String.CompareTo con un parámetro comparisonType y proporcione un valor StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase o StringComparison.OrdinalIgnoreCase para el argumento comparisonType. Para realizar una comparación usando una referencia cultural específica que no sea la referencia cultural actual, llame a una sobrecarga del método String.CompareTo con los parámetros culture y options, y proporcione el valor CompareOptions.IgnoreCase como el argumento options.

Para comparar cadenas con mayúsculas y minúsculas mezcladas a fin de determinar si son iguales, llame a alguna de las sobrecargas del método String.Equals con un parámetro comparisonType y proporcione un valor StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase o StringComparison.OrdinalIgnoreCase para el argumento comparisonType.

Para obtener más información, vea Procedimientos recomendados para la comparación de cadenas.

Método ToUpper

El método String.ToUpper convierte todos los caracteres de una cadena a mayúsculas. En el siguiente ejemplo se convierte la cadena "Hello World!" de mayúsculas y minúsculas mezcladas a mayúsculas.

string properString = "Hello World!";
Console.WriteLine(properString.ToUpper());
// This example displays the following output:
//       HELLO WORLD!
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.ToUpper())
' This example displays the following output:
'       HELLO WORLD!

El ejemplo anterior tiene en cuenta la referencia cultural de forma predeterminada; aplica las convenciones de mayúsculas y minúsculas de la referencia cultural actual. Para realizar un cambio de mayúsculas y minúsculas sin tener en cuenta la referencia cultural o para aplicar las convenciones de mayúsculas y minúsculas de una referencia cultural determinada, use la sobrecarga del método String.ToUpper(CultureInfo) y proporcione un valor CultureInfo.InvariantCulture o un objeto System.Globalization.CultureInfo que represente la referencia cultural especificada al parámetro culture. Para obtener un ejemplo donde se muestra cómo usar el método ToUpper para realizar un cambio de mayúsculas y minúsculas sin tener en cuenta la referencia cultural, vea Realización de cambios de mayúsculas y minúsculas que no distinguen entre referencias culturales.

Método ToLower

El método String.ToLower es similar al método anterior, pero en su lugar convierte todos los caracteres de una cadena a minúsculas. En el siguiente ejemplo se convierte la cadena "Hello World!" a minúsculas.

string properString = "Hello World!";
Console.WriteLine(properString.ToLower());
// This example displays the following output:
//       hello world!
Dim MyString As String = "Hello World!"
Console.WriteLine(MyString.ToLower())
' This example displays the following output:
'       hello world!

El ejemplo anterior tiene en cuenta la referencia cultural de forma predeterminada; aplica las convenciones de mayúsculas y minúsculas de la referencia cultural actual. Para realizar un cambio de mayúsculas y minúsculas sin tener en cuenta la referencia cultural o para aplicar las convenciones de mayúsculas y minúsculas de una referencia cultural determinada, use la sobrecarga del método String.ToLower(CultureInfo) y proporcione un valor CultureInfo.InvariantCulture o un objeto System.Globalization.CultureInfo que represente la referencia cultural especificada al parámetro culture. Para obtener un ejemplo donde se muestra cómo usar el método ToLower(CultureInfo) para realizar un cambio de mayúsculas y minúsculas sin tener en cuenta la referencia cultural, vea Realización de cambios de mayúsculas y minúsculas que no distinguen entre referencias culturales.

Método ToTitleCase

El método TextInfo.ToTitleCase convierte el primer carácter de cada palabra a mayúsculas y el resto de los caracteres a minúsculas. Sin embargo, se da por hecho que las palabras que están completamente en mayúsculas son siglas y no se convierten.

El método TextInfo.ToTitleCase tiene en cuenta la referencia cultural; es decir, usa las convenciones de mayúsculas y minúsculas de una referencia cultural determinada. Para llamar al método, recupere primero el objeto TextInfo que representa las convenciones de mayúsculas y minúsculas de la referencia cultural determinada a partir de la propiedad CultureInfo.TextInfo de una referencia cultural determinada.

En el ejemplo siguiente, se pasa cada cadena de una matriz al método TextInfo.ToTitleCase. Las cadenas incluyen cadenas de título correctas así como acrónimos. Las cadenas se convierten a mayúsculas de tipo título usando las convenciones de mayúsculas y minúsculas de la referencia cultural Inglés (Estados Unidos).

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] values = { "a tale of two cities", "gROWL to the rescue",
                          "inside the US government", "sports and MLB baseball",
                          "The Return of Sherlock Holmes", "UNICEF and children"};

      TextInfo ti = CultureInfo.CurrentCulture.TextInfo;
      foreach (var value in values)
         Console.WriteLine("{0} --> {1}", value, ti.ToTitleCase(value));
   }
}
// The example displays the following output:
//    a tale of two cities --> A Tale Of Two Cities
//    gROWL to the rescue --> Growl To The Rescue
//    inside the US government --> Inside The US Government
//    sports and MLB baseball --> Sports And MLB Baseball
//    The Return of Sherlock Holmes --> The Return Of Sherlock Holmes
//    UNICEF and children --> UNICEF And Children
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim values() As String = {"a tale of two cities", "gROWL to the rescue",
                                   "inside the US government", "sports and MLB baseball",
                                   "The Return of Sherlock Holmes", "UNICEF and children"}

        Dim ti As TextInfo = CultureInfo.CurrentCulture.TextInfo
        For Each value In values
            Console.WriteLine("{0} --> {1}", value, ti.ToTitleCase(value))
        Next
    End Sub
End Module
' The example displays the following output:
'    a tale of two cities --> A Tale Of Two Cities
'    gROWL to the rescue --> Growl To The Rescue
'    inside the US government --> Inside The US Government
'    sports and MLB baseball --> Sports And MLB Baseball
'    The Return of Sherlock Holmes --> The Return Of Sherlock Holmes
'    UNICEF and children --> UNICEF And Children

Recuerde que, aunque tiene en cuenta la referencia cultural, el método TextInfo.ToTitleCase no proporciona reglas de mayúsculas y minúsculas lingüísticamente correctas. En el ejemplo anterior, el método convierte "a tale of two cities" en "A Tale Of Two Cities". Sin embargo, el uso lingüísticamente correcto de las mayúsculas y minúsculas de título para la referencia cultural en-US es "A Tale of Two Cities".

Vea también