在 .NET 中變更大小寫
如果您要撰寫接受使用者輸入的應用程式,則無法確定使用者輸入資料時會使用的大小寫 (大寫或小寫)。 通常,您會希望字串的大小寫一致,特別是要在使用者介面中顯示這些字串時。 下表描述三種變更大小寫的方法。 前兩種方法提供接受文化特性的多載。
方法名稱 | 使用 |
---|---|
String.ToUpper | 將字串中的所有字元轉換成大寫。 |
String.ToLower | 將字串中的所有字元轉換成小寫。 |
TextInfo.ToTitleCase | 將字串轉換成字首大寫。 |
警告
您不應該使用 String.ToUpper 和 String.ToLower 方法來轉換字串,以便對字串進行比較或測試字串是否相等。 如需詳細資訊,請參閱比較混合大小寫的字串一節。
比較混合大小寫的字串
若要比較混合大小寫的字串以決定其順序,請使用 comparisonType
參數呼叫 String.CompareTo 方法的其中一個多載,並為 comparisonType
引數提供 StringComparison.CurrentCultureIgnoreCase、StringComparison.InvariantCultureIgnoreCase 或 StringComparison.OrdinalIgnoreCase 的值。 若要使用目前文化特性以外的特定文化特性進行比較,請使用 culture
和 options
參數呼叫 String.CompareTo 方法的多載,並提供 CompareOptions.IgnoreCase 的值做為 options
引數。
若要比較混合大小寫的字串以決定字串是否相等,請使用 comparisonType
參數呼叫 String.Equals 方法的其中一個多載,並為 comparisonType
引數提供 StringComparison.CurrentCultureIgnoreCase、StringComparison.InvariantCultureIgnoreCase 或 StringComparison.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"。