Udostępnij za pośrednictwem


Przypadek zmiany na platformie .NET

Jeśli piszesz aplikację, która przyjmuje dane wejściowe od użytkownika, nigdy nie możesz być pewny, jakiej wielkości liter (wielkie lub małe) użyje on do wprowadzenia danych. Często ciągi mają być spójne, szczególnie w przypadku wyświetlania ich w interfejsie użytkownika. W poniższej tabeli opisano trzy metody zmiany wielkości liter. Dwie pierwsze metody zapewniają przeciążenie, które akceptuje kulturę.

Nazwa metody Użyj
String.ToUpper Konwertuje wszystkie znaki w ciągu tekstowym na wielkie litery.
String.ToLower Konwertuje wszystkie znaki w ciągu na małe litery.
TextInfo.ToTitleCase Konwertuje ciąg na format tytułowy.

Ostrzeżenie

Metody String.ToUpper i String.ToLower nie powinny być używane do konwertowania ciągów w celu ich porównywania ani testowania pod kątem równości. Aby uzyskać więcej informacji, zobacz sekcję Porównanie ciągów przypadku mieszanego .

Porównywanie łańcuchów znaków o różnej wielkości liter

Aby porównać ciągi przypadku mieszanego, aby określić ich kolejność, wywołaj jedno z przeciążeń String.CompareTo metody za pomocą comparisonType parametru i podaj wartość StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCaselub StringComparison.OrdinalIgnoreCase dla argumentu comparisonType . W przypadku porównania przy użyciu określonej kultury innej niż bieżąca kultura wywołaj przeciążenie String.CompareTo metody z parametrem culture i options i i podaj wartość CompareOptions.IgnoreCase jako options argument.

Aby porównać ciągi przypadku mieszanego, aby określić, czy są równe, wywołaj jedno z przeciążeń String.Equals metody za pomocą comparisonType parametru i podaj wartość StringComparison.CurrentCultureIgnoreCase, StringComparison.InvariantCultureIgnoreCaselub StringComparison.OrdinalIgnoreCase dla argumentu comparisonType .

Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące używania ciągów.

Metoda ToUpper

Metoda String.ToUpper zmienia wszystkie znaki w ciągu na wielkie litery. Poniższy przykład konwertuje ciąg "Hello World!" z mieszanego zapisu na wielkie litery.

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!

Przykład ten jest domyślnie dostosowany do kultury; stosuje konwencje wielkości liter właściwe dla bieżącej kultury. Aby wykonać zmianę wielkości liter, nie uwzględniając kultury, lub zastosować konwencje wielkości liter dla konkretnej kultury, użyj przeciążenia metody String.ToUpper(CultureInfo) i przekaż wartość CultureInfo.InvariantCulture lub obiekt System.Globalization.CultureInfo reprezentujący określoną kulturę do parametru culture. Aby zapoznać się z przykładem użycia metody ToUpper w celu przeprowadzenia zmiany wielkości liter bez uwzględniania kultury, zobacz Wykonywanie zmian wielkości liter bez uwzględniania kultury.

Metoda ToLower

Metoda String.ToLower jest podobna do poprzedniej metody, lecz konwertuje wszystkie znaki w ciągu na małe litery. Poniższy przykład konwertuje ciąg "Hello World!" na małe litery.

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!

Podany przykład jest z natury dostosowany do kultury; stosuje zasady użycia wielkich liter według obecnej kultury. Aby zmienić wielkość liter bez uwzględniania specyfiki kulturowej lub zastosować konwencje wielkości liter konkretnej kultury, użyj przeciążenia metody String.ToLower(CultureInfo) i przekaż wartość CultureInfo.InvariantCulture lub obiekt System.Globalization.CultureInfo, który reprezentuje określoną kulturę, do parametru culture. Aby zapoznać się z przykładem użycia metody ToLower(CultureInfo) do przeprowadzenia zmiany wielkości liter bez uwzględniania kultury, zobacz Wykonywanie zmian wielkości liter bez uwzględniania kultury.

Metoda ToTitleCase

Element TextInfo.ToTitleCase konwertuje pierwszy znak każdego wyrazu na wielkie litery i pozostałe znaki na małe litery. Jednak wyrazy, które są całkowicie wielkimi literami, zakłada się, że są akronimami i nie są konwertowane.

Metoda TextInfo.ToTitleCase jest wrażliwa na kulturę, czyli używa konwencji wielkości liter określonej kultury. Aby wywołać metodę, należy najpierw pobrać obiekt TextInfo, który reprezentuje konwencje wielkości liter dla określonej kultury, z właściwości CultureInfo.TextInfo tej kultury.

Poniższy przykład przekazuje każdy ciąg w tablicy do TextInfo.ToTitleCase metody . Ciągi zawierają odpowiednie ciągi tytułu, a także akronimy. Ciągi są konwertowane na styl zapisywania tytułów wielką literą zgodnie z zasadami użycia wielkich liter w języku angielskim (Stanów Zjednoczonych).

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

Należy pamiętać, że chociaż jest wrażliwa na kulturę, metoda TextInfo.ToTitleCase nie zapewnia poprawnych językowo zasad użycia wielkości liter. Na przykład w poprzednim przykładzie metoda konwertuje "opowieść o dwóch miastach" na "Opowieść o dwóch miastach". Jednak poprawna językowo pisownia tytułu dla kultury en-US to "Opowieść o dwóch miastach".

Zobacz też