共用方式為


在 .NET 中變更大小寫

如果您要撰寫接受使用者輸入的應用程式,則無法確定使用者輸入資料時會使用的大小寫 (大寫或小寫)。 通常,您會希望字串的大小寫一致,特別是要在使用者介面中顯示這些字串時。 下表描述三種變更大小寫的方法。 前兩種方法提供接受文化特性的多載。

方法名稱 使用
String.ToUpper 將字串中的所有字元轉換成大寫。
String.ToLower 將字串中的所有字元轉換成小寫。
TextInfo.ToTitleCase 將字串轉換成字首大寫。

警告

您不應該使用 String.ToUpperString.ToLower 方法來轉換字串,以便對字串進行比較或測試字串是否相等。 如需詳細資訊,請參閱比較混合大小寫的字串一節。

比較混合大小寫的字串

若要比較混合大小寫的字串以決定其順序,請使用 comparisonType 參數呼叫 String.CompareTo 方法的其中一個多載,並為 comparisonType 引數提供 StringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCaseStringComparison.OrdinalIgnoreCase 的值。 若要使用目前文化特性以外的特定文化特性進行比較,請使用 cultureoptions 參數呼叫 String.CompareTo 方法的多載,並提供 CompareOptions.IgnoreCase 的值做為 options 引數。

若要比較混合大小寫的字串以決定字串是否相等,請使用 comparisonType 參數呼叫 String.Equals 方法的其中一個多載,並為 comparisonType 引數提供 StringComparison.CurrentCultureIgnoreCaseStringComparison.InvariantCultureIgnoreCaseStringComparison.OrdinalIgnoreCase 的值。

如需詳細資訊,請參閱使用字串的最佳做法

ToUpper 方法

String.ToUpper 方法會將字串中的所有字元變更為大寫。 下列範例會將字串 "Hello World!" 從混合大小寫轉換成大寫。

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!

上述範例預設會區分文化特性,它會套用目前文化特性的大小寫慣例。 若要執行不區分文化特性的大小寫變更,或套用特定文化特性的大小寫慣例,請使用 String.ToUpper(CultureInfo) 方法多載,並將 CultureInfo.InvariantCulture 的值或代表指定文化特性的 System.Globalization.CultureInfo 物件提供給 culture 參數。 如需示範如何使用 ToUpper 方法,以執行不區分文化特性之大小寫變更的範例,請參閱執行不區分文化特性的大小寫變更

ToLower 方法

String.ToLower 方法類似於前一個方法,但會改將字串中的所有字元轉換成小寫。 下列範例會將字串 "Hello World!" 轉換成小寫。

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!

上述範例預設會區分文化特性,它會套用目前文化特性的大小寫慣例。 若要執行不區分文化特性的大小寫變更,或套用特定文化特性的大小寫慣例,請使用 String.ToLower(CultureInfo) 方法多載,並將 CultureInfo.InvariantCulture 的值或代表指定文化特性的 System.Globalization.CultureInfo 物件提供給 culture 參數。 如需示範如何使用 ToLower(CultureInfo) 方法,以執行不區分文化特性之大小寫變更的範例,請參閱執行不區分文化特性的大小寫變更

ToTitleCase 方法

TextInfo.ToTitleCase 會將每個字的第一個字元轉換成大寫,並將其餘字元轉換成小寫。 不過,全部大寫的字會假設為縮略字,而且不會轉換。

TextInfo.ToTitleCase 方法區分文化特性;也就是說,它會使用特定文化特性的大小寫慣例。 若要呼叫方法,請先從特定文化特性的 CultureInfo.TextInfo 屬性,擷取代表特定文化特性之大小寫慣例的 TextInfo 物件。

下列範例會將陣列中的每個字串傳遞給 TextInfo.ToTitleCase 方法。 這些字串包含適當的字首大寫字串和縮略字。 這些字串使用英文 (美國) 文化特性的大小寫慣例轉換成字首大寫。

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

請注意,雖然它區分文化特性,但 TextInfo.ToTitleCase 方法不會提供語言正確的大小寫規則。 例如,在上述範例中,這個方法會將 "a tale of two cities" 轉換成 "A Tale Of Two Cities"。 不過,對於 en-US 文化特性而言語言正確的字首大寫為 "A Tale of Two Cities"。

另請參閱