Condividi tramite


Modificare maiuscole/minuscole in .NET

Quando si scrive un'applicazione che accetta input dall'utente non si può conoscere la combinazione di maiuscole e minuscole che verrà usata durante l'immissione dei dati. Spesso è desiderabile che le la combinazione di maiuscole e minuscole nelle stringhe sia coerente, in particolare se le stringhe vengono visualizzate nell'interfaccia utente. La tabella seguente descrive tre metodi per la modifica della combinazione di maiuscole e minuscole. I primi due metodi forniscono un overload che accetta determinate impostazioni cultura.

Nome metodo Utilizzo
String.ToUpper Converte tutti i caratteri di una stringa in lettere maiuscole.
String.ToLower Converte tutti i caratteri di una stringa in lettere minuscole.
TextInfo.ToTitleCase Converte una stringa nella combinazione con tutte le iniziali maiuscole.

Avviso

I metodi String.ToUpper e String.ToLower non devono essere usati per convertire le stringhe a scopo di confronto o verifica dell'uguaglianza. Per altre informazioni, vedere la sezione Confrontare stringhe con una combinazione mista di maiuscole e minuscole.

Confrontare stringhe con una combinazione mista di maiuscole e minuscole

Per confrontare stringhe composte da una combinazione mista di maiuscole e minuscole allo scopo di determinarne l'ordinamento, chiamare uno degli overload del metodo String.CompareTo con un parametro comparisonType e quindi fornire un valore di StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase o StringComparison.OrdinalIgnoreCase per l'argomento comparisonType. Per eseguire un confronto usando impostazioni cultura diverse da quelle correnti, chiamare un overload del metodo String.CompareTo con un parametro culture e un parametro options e fornire un valore di CompareOptions.IgnoreCase come argomento options.

Per confrontare stringhe in caratteri maiuscoli e minuscoli allo scopo di determinarne se sono uguali, chiamare uno degli overload del metodo String.Equals con un parametro comparisonType e quindi fornire un valore di StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase o StringComparison.OrdinalIgnoreCase per l'argomento comparisonType.

Per altre informazioni, vedere Procedure consigliate per l'uso di stringhe.

Metodo ToUpper

Il metodo String.ToUpper converte tutti i caratteri di una stringa in lettere maiuscole. L'esempio seguente converte la stringa "Hello World!" da una combinazione mista di maiuscole e minuscole in sole lettere maiuscole.

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!

L'esempio precedente dipende dalle impostazioni cultura per impostazione predefinita; applica le convenzioni sulla combinazione di maiuscole e minuscole delle impostazioni cultura correnti. Per eseguire una modifica di maiuscole e minuscole indipendente dalle impostazioni cultura o applicare le convenzioni sulla combinazione di maiuscole e minuscole di determinate impostazioni cultura, usare l'overload del metodo String.ToUpper(CultureInfo) e fornire il valore CultureInfo.InvariantCulture o un oggetto System.Globalization.CultureInfo che rappresenti le impostazioni cultura specificate nel parametro culture. Per un esempio in cui viene illustrato l'uso del metodo ToUpper per eseguire una modifica della combinazione di maiuscole e minuscole indipendente dalle impostazioni cultura, vedere Eseguire modifiche di maiuscole e minuscole indipendenti dalle impostazioni cultura.

Metodo ToLower

Il metodo String.ToLower è simile al precedente, con la differenza che converte tutti i caratteri di una stringa in lettere minuscole. L'esempio seguente converte la stringa "Hello World!" in lettere minuscole.

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!

L'esempio precedente dipende dalle impostazioni cultura per impostazione predefinita; applica le convenzioni sulla combinazione di maiuscole e minuscole delle impostazioni cultura correnti. Per eseguire una modifica di maiuscole e minuscole indipendente dalle impostazioni cultura o applicare le convenzioni sulla combinazione di maiuscole e minuscole di determinate impostazioni cultura, usare l'overload del metodo String.ToLower(CultureInfo) e fornire il valore CultureInfo.InvariantCulture o un oggetto System.Globalization.CultureInfo che rappresenti le impostazioni cultura specificate nel parametro culture. Per un esempio in cui viene illustrato l'uso del metodo ToLower(CultureInfo) per eseguire una modifica della combinazione di maiuscole e minuscole indipendente dalle impostazioni cultura, vedere Eseguire modifiche di maiuscole e minuscole indipendenti dalle impostazioni cultura.

Metodo ToTitleCase

Il metodo TextInfo.ToTitleCase converte il primo carattere di ogni parola in maiuscolo e i caratteri rimanenti in minuscolo. Le parole interamente in maiuscolo, tuttavia, vengono considerate acronimi e non vengono convertite.

Il metodo TextInfo.ToTitleCase è basato sulle impostazioni cultura, vale a dire che usa le convenzioni sulla combinazione di maiuscole e minuscole di determinate impostazioni cultura. Per chiamare il metodo è innanzitutto necessario recuperare l'oggetto TextInfo, che rappresenta le convenzioni sulla combinazione di maiuscole e minuscole di determinate impostazioni cultura, dalla proprietà CultureInfo.TextInfo di specifiche impostazioni cultura.

Nell'esempio, ogni stringa di una matrice viene passata al metodo TextInfo.ToTitleCase. Nelle stringhe sono incluse le stringhe corrette dei titoli e gli acronimi. Le stringhe vengono convertite in maiuscole usando le convenzioni delle impostazioni cultura Inglese (Stati Uniti).

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

Si noti che, sebbene sia dipendente dalle impostazioni cultura, il metodo TextInfo.ToTitleCase non fornisce regole sull'uso di maiuscole e minuscole linguisticamente corrette. Ad esempio, nell'esempio precedente, il metodo converte "a tale of two cities" in "A Tale Of Two Cities". Tuttavia, la combinazione linguisticamente corretta per le impostazioni cultura Inglese (Stati Uniti) è "A Tale of Two Cities."

Vedi anche