Condividi tramite


Modificare il formato delle lettere in .NET

Se si scrive un'applicazione che accetta l'input da un utente, non è mai possibile assicurarsi quale distinzione tra maiuscole e minuscole verrà usata per immettere i dati. Spesso si desidera che le stringhe vengano formattate in modo coerente, in particolare se visualizzate nell'interfaccia utente. Nella tabella seguente vengono descritti tre metodi di modifica delle maiuscole e minuscole. I primi due metodi forniscono un overload che accetta una cultura.

Nome del metodo Utilizzo
String.ToUpper Converte tutti i caratteri in una stringa in maiuscolo.
String.ToLower Converte tutti i caratteri in una stringa in lettere minuscole.
TextInfo.ToTitleCase Converte una stringa in lettere maiuscole/minuscole del titolo.

Avvertimento

I String.ToUpper metodi e String.ToLower non devono essere usati per convertire le stringhe per confrontarle o testarle per verificarne l'uguaglianza. Per altre informazioni, vedere la sezione Confrontare stringhe di maiuscole e minuscole miste .

Confrontare stringhe di caratteri in maiuscolo e minuscolo misti

Per confrontare stringhe in maiuscolo e minuscolo per determinare l'ordinamento, chiamare uno degli overload del metodo String.CompareTo con un parametro comparisonType e specificare il valore StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCase o StringComparison.OrdinalIgnoreCase per l'argomento comparisonType. Per un confronto che utilizza un'impostazione cultura specifica diversa dall'impostazione corrente, chiamare un overload del metodo String.CompareTo con un parametro culture e un parametro options, e specificare un valore di CompareOptions.IgnoreCase come argomento options.

Per confrontare stringhe di vario tipo di maiuscole e minuscole per determinare se sono uguali, chiamare uno degli overload del metodo String.Equals con un parametro comparisonType e specificare il valore 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 String.ToUpper metodo modifica tutti i caratteri di una stringa in maiuscolo. L'esempio seguente converte la stringa "Hello World!" da minuscolo/maiuscolo a maiuscolo.

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 è sensibile alla cultura per impostazione predefinita; applica le convenzioni di maiuscole e minuscole della cultura corrente. Per eseguire una modifica della capitalizzazione senza distinzione culturale o per applicare le convenzioni di capitalizzazione di una determinata cultura, utilizzare l'overload del metodo String.ToUpper(CultureInfo) e fornire un valore di CultureInfo.InvariantCulture o un oggetto System.Globalization.CultureInfo che rappresenta la cultura specificata al parametro culture. Per un esempio che illustra come usare il ToUpper metodo per eseguire un cambio di maiuscole/minuscole indipendentemente dalle impostazioni cultura, vedere Eseguire modifiche maiuscole/minuscole indipendentemente dalle impostazioni cultura.

Metodo ToLower

Il String.ToLower metodo è simile al metodo precedente, ma converte in minuscolo tutti i caratteri in una stringa. Nell'esempio seguente la stringa "Hello World!" viene convertita in minuscolo.

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 è sensibile alla cultura per impostazione predefinita; applica le convenzioni di maiuscole e minuscole della cultura corrente. Per eseguire una modifica della capitalizzazione senza distinzione culturale o per applicare le convenzioni di capitalizzazione di una determinata cultura, utilizzare l'overload del metodo String.ToLower(CultureInfo) e fornire un valore di CultureInfo.InvariantCulture o un oggetto System.Globalization.CultureInfo che rappresenta la cultura specificata al parametro culture. Per un esempio che illustra come usare il ToLower(CultureInfo) metodo per eseguire un cambio di maiuscole/minuscole indipendentemente dalle impostazioni cultura, vedere Eseguire modifiche maiuscole/minuscole indipendentemente dalle impostazioni cultura.

Metodo ToTitleCase

TextInfo.ToTitleCase Converte il primo carattere di ogni parola in maiuscolo e i caratteri rimanenti in lettere minuscole. Tuttavia, si presuppone che le parole interamente maiuscole siano acronimi e non vengano convertite.

Il TextInfo.ToTitleCase metodo è sensibile alle impostazioni culturali, ovvero usa le convenzioni di formattazione delle maiuscole e minuscole di una determinata cultura. Per chiamare il metodo, per prima cosa recuperare l'oggetto TextInfo che rappresenta le convenzioni di maiuscole e minuscole di una cultura particolare dalla proprietà CultureInfo.TextInfo di una cultura particolare.

Nell'esempio seguente viene passata ogni stringa in una matrice al TextInfo.ToTitleCase metodo . Le stringhe includono correttamente i titoli e gli acronimi. Le stringhe vengono convertite in formato titolo usando le convenzioni di maiuscole e minuscole nella 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($"{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 sensibile alla cultura, il metodo TextInfo.ToTitleCase non fornisce regole linguisticamente corrette di maiuscole e minuscole. Ad esempio, nell'esempio precedente, il metodo converte "un racconto di due città" in "A Tale of Two Cities". Tuttavia, la combinazione di maiuscole e minuscole in lingua corretta per la cultura en-US è "A Tale of Two Cities".

Vedere anche