Alterar maiúsculas e minúsculas no .NET
Se você escrever um aplicativo que aceita entrada de um usuário, você nunca pode ter certeza de que caso (superior ou inferior) eles usarão para inserir os dados. Muitas vezes, você deseja que as cadeias de caracteres sejam encapsuladas de forma consistente, especialmente se você as estiver exibindo na interface do usuário. A tabela a seguir descreve três métodos de alteração de maiúsculas e minúsculas. Os dois primeiros métodos fornecem uma sobrecarga que aceita uma cultura.
Nome do método | Utilizar |
---|---|
String.ToUpper | Converte todos os caracteres em uma cadeia de caracteres em maiúsculas. |
String.ToLower | Converte todos os caracteres em uma cadeia de caracteres em minúsculas. |
TextInfo.ToTitleCase | Converte uma cadeia de caracteres em maiúsculas e minúsculas. |
Aviso
Os String.ToUpper métodos e String.ToLower não devem ser usados para converter cadeias de caracteres a fim de compará-las ou testá-las quanto à igualdade. Para obter mais informações, consulte a seção Comparar cadeias de caracteres de maiúsculas e minúsculas mistas.
Comparar cadeias de caracteres de maiúsculas e minúsculas mistas
Para comparar cadeias de caracteres de maiúsculas e minúsculas mistas para determinar sua ordenação, chame uma das sobrecargas do String.CompareTo método com um comparisonType
parâmetro e forneça um valor de StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase, ou StringComparison.OrdinalIgnoreCase para o comparisonType
argumento. Para uma comparação usando uma cultura específica diferente da cultura atual, chame uma sobrecarga do String.CompareTo método com a culture
e options
parâmetro e forneça um valor de CompareOptions.IgnoreCase como o options
argumento.
Para comparar cadeias de caracteres de maiúsculas e minúsculas mistas para determinar se elas são iguais, chame uma das sobrecargas do String.Equals método com um comparisonType
parâmetro e forneça um valor de StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase, ou StringComparison.OrdinalIgnoreCase para o comparisonType
argumento.
Para obter mais informações, consulte Práticas recomendadas para o uso de cadeias de caracteres.
ToUpper
método
O String.ToUpper método altera todos os caracteres em uma cadeia de caracteres para maiúsculas. O exemplo a seguir converte a cadeia de caracteres "Hello World!" de maiúsculas para maiú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!
O exemplo anterior é sensível à cultura por padrão; Aplica as convenções de revestimento da cultura atual. Para executar uma alteração de maiúsculas e minúsculas sem distinção de cultura ou para aplicar as convenções de invólucro de uma cultura específica, use a String.ToUpper(CultureInfo) sobrecarga de método e forneça um valor ou CultureInfo.InvariantCulture um System.Globalization.CultureInfo objeto que represente a cultura especificada para o culture
parâmetro. Para obter um exemplo que demonstra como usar o método para executar uma alteração de maiúsculas e minúsculas que não diferencia cultura, consulte Executar alterações de maiúsculas ToUpper e minúsculas que não diferenciam cultura.
ToLower
método
O String.ToLower método é semelhante ao método anterior, mas em vez disso converte todos os caracteres em uma cadeia de caracteres em minúsculas. O exemplo a seguir converte a cadeia de caracteres "Hello World!" em 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!
O exemplo anterior é sensível à cultura por padrão; Aplica as convenções de revestimento da cultura atual. Para executar uma alteração de maiúsculas e minúsculas sem distinção de cultura ou para aplicar as convenções de invólucro de uma cultura específica, use a String.ToLower(CultureInfo) sobrecarga de método e forneça um valor ou CultureInfo.InvariantCulture um System.Globalization.CultureInfo objeto que represente a cultura especificada para o culture
parâmetro. Para obter um exemplo que demonstra como usar o método para executar uma alteração de maiúsculas e minúsculas que não diferencia cultura, consulte Executar alterações de maiúsculas ToLower(CultureInfo) e minúsculas que não diferenciam cultura.
ToTitleCase
método
O TextInfo.ToTitleCase converte o primeiro caractere de cada palavra em maiúsculas e os caracteres restantes em minúsculas. No entanto, as palavras que são inteiramente maiúsculas são assumidas como acrónimos e não são convertidas.
O TextInfo.ToTitleCase método é sensível à cultura, ou seja, usa as convenções de invólucro de uma determinada cultura. Para chamar o método, você primeiro recupera o TextInfo objeto que representa as convenções de invólucro da cultura particular da CultureInfo.TextInfo propriedade de uma cultura particular.
O exemplo a seguir passa cada cadeia de caracteres em uma matriz para o TextInfo.ToTitleCase método. As cadeias de caracteres incluem cadeias de caracteres de título adequadas, bem como siglas. As cadeias de caracteres são convertidas em maiúsculas e minúsculas usando as convenções de invólucro da cultura inglesa (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
Note que, embora seja sensível à cultura, o TextInfo.ToTitleCase método não fornece regras de invólucro linguisticamente corretas. Por exemplo, no exemplo anterior, o método converte "um conto de duas cidades" em "um conto de duas cidades". No entanto, o título linguisticamente correto para a cultura en-US é "A Tale of Two Cities".