Udostępnij za pośrednictwem


Przypadek zmiany na platformie .NET

Jeśli napiszesz aplikację, która akceptuje dane wejściowe od użytkownika, nigdy nie możesz mieć pewności, w jakim przypadku (górna lub niższa) będą one używane do wprowadzania 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żywanie
String.ToUpper Konwertuje wszystkie znaki w ciągu na wielkie litery.
String.ToLower Konwertuje wszystkie znaki w ciągu na małe litery.
TextInfo.ToTitleCase Konwertuje ciąg na przypadek tytułu.

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 ciągów wielkości liter mieszanych

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.

ToUpper Metoda

Metoda String.ToUpper zmienia wszystkie znaki w ciągu na wielkie litery. Poniższy przykład konwertuje ciąg "Hello World!" z wielkiej litery 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!

Powyższy przykład jest domyślnie wrażliwy na kulturę; stosuje konwencje wielkości liter bieżącej kultury. Aby przeprowadzić zmianę wielkości liter bez uwzględniania kultury lub zastosować konwencje wielkości liter dla określonej kultury, użyj String.ToUpper(CultureInfo) przeciążenia metody i podaj wartość CultureInfo.InvariantCulture lub System.Globalization.CultureInfo obiekt reprezentujący określoną kulturę do parametru culture . Aby zapoznać się z przykładem użycia ToUpper metody w celu przeprowadzenia zmiany wielkości liter bez uwzględniania kultury, zobacz Perform culture-in-insensitive case changes (Wykonywanie zmian wielkości liter bez uwzględniania kultury).

ToLower Metoda

Metoda jest podobna String.ToLower do poprzedniej metody, ale zamiast tego 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!

Powyższy przykład jest domyślnie wrażliwy na kulturę; stosuje konwencje wielkości liter bieżącej kultury. Aby przeprowadzić zmianę wielkości liter bez uwzględniania kultury lub zastosować konwencje wielkości liter dla określonej kultury, użyj String.ToLower(CultureInfo) przeciążenia metody i podaj wartość CultureInfo.InvariantCulture lub System.Globalization.CultureInfo obiekt reprezentujący określoną kulturę do parametru culture . Aby zapoznać się z przykładem użycia ToLower(CultureInfo) metody w celu przeprowadzenia zmiany wielkości liter bez uwzględniania kultury, zobacz Perform culture-in-insensitive case changes (Wykonywanie zmian wielkości liter bez uwzględniania kultury).

ToTitleCase Metoda

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 wielkie, przyjmuje 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ć TextInfo obiekt reprezentujący konwencje wielkości liter określonej kultury z CultureInfo.TextInfo właściwości określonej 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 przypadek tytułu przy użyciu konwencji wielkości liter w języku angielskim (Stany Zjednoczone).

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

Należy pamiętać, że chociaż jest ona wrażliwa na kulturę, TextInfo.ToTitleCase metoda nie zapewnia lingwistycznej poprawności reguł 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 lingwistyczna wielkość tytułu dla kultury en-USA to "Opowieść o dwóch miastach".

Zobacz też