共用方式為


比較 .NET 中的字串

.NET 提供數種方法來比較字串的值。 下表列出並描述值比較方法。

方法名稱 使用
String.Compare 比較兩個字串的值。 傳回整數值。
String.CompareOrdinal 比較兩個字串,而不考慮區域性文化。 傳回整數值。
String.CompareTo 比較目前的字串物件與另一個字串。 傳回整數值。
String.StartsWith 判斷字串是否以傳遞的字串開頭。 傳回布爾值。
String.EndsWith 判斷字串是否以傳遞的字串結尾。 傳回布爾值。
String.Contains 判斷字元或字串是否發生在另一個字串內。 傳回布爾值。
String.Equals 判斷兩個字串是否相同。 傳回布爾值。
String.IndexOf 傳回字元或字串的索引位置,從您正在檢查的字串開頭開始。 傳回整數值。
String.LastIndexOf 傳回字元或字串的索引位置,從您正在檢查的字串結尾開始。 傳回整數值。

Compare 方法

靜態 String.Compare 方法提供比較兩個字串的完整方式。 此方法考慮到文化背景。 您可以使用此函式來比較兩個字串或兩個字串的子字串。 此外,還提供考量或不考量大小寫及文化差異的多載版本。 下表顯示這個方法可能傳回的三個整數值。

返回值 狀況
負整數 第一個字串在排序順序中的第二個字元串之前。

-或-

第一個字串是 null
0 第一個字串和第二個字串相等。

-或-

這兩個字串都是 null
正整數

-或-

1
第一個字串會遵循排序順序中的第二個字元串。

-或-

第二個字串為 null

這很重要

方法 String.Compare 主要用於排序或排序字串時使用。 您不應該使用 String.Compare 方法來測試是否相等(也就是說,明確尋找傳回值 0,而不考慮一個字串是否小於或大於另一個字元串)。 相反地,若要判斷兩個字串是否相等,請使用 String.Equals(String, String, StringComparison) 方法。

下列範例使用 String.Compare 方法來判斷兩個字串的相對值。

string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

這個範例會顯示 -1 至主控台。

預設情況下,前面的範例對文化差異是敏感的。 若要執行不區分文化特性的字串比較,請使用 String.Compare 方法的重載,藉由提供 文化特性 參數來指定要使用的文化特性。 如需示範如何使用 String.Compare 方法來執行不區分文化特性比較的範例,請參閱 不區分文化特性的字串比較

CompareOrdinal 方法

String.CompareOrdinal 方法會在不考慮區域性文化特性的情況下比較兩個字串物件。 這個方法的傳回值與上表中 方法所 Compare 傳回的值相同。

這很重要

方法 String.CompareOrdinal 主要用於排序或排序字串時使用。 您不應該使用 String.CompareOrdinal 方法來測試是否相等(也就是說,明確尋找傳回值 0,而不考慮一個字串是否小於或大於另一個字元串)。 相反地,若要判斷兩個字串是否相等,請使用 String.Equals(String, String, StringComparison) 方法。

下列範例會使用 CompareOrdinal 方法來比較兩個字串的值。

string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

這個範例會顯示 -32 至主控台。

CompareTo 方法

方法 String.CompareTo 會將目前字串物件封裝的字串與另一個字串或對象進行比較。 這個方法的傳回值與上表中 方法所 String.Compare 傳回的值相同。

這很重要

方法 String.CompareTo 主要用於排序或排序字串時使用。 您不應該使用 String.CompareTo 方法來測試是否相等(也就是說,明確尋找傳回值 0,而不考慮一個字串是否小於或大於另一個字元串)。 相反地,若要判斷兩個字串是否相等,請使用 String.Equals(String, String, StringComparison) 方法。

下列範例使用 String.CompareTo 方法來比較 string1 物件與 string2 物件。

string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)

這個範例會顯示 -1 至主控台。

預設情況下,String.CompareTo 方法的所有多載都會執行與文化相關且區分大小寫的比較。 未提供此方法的多載,可讓您執行不區分文化特性的比較。 為了使程式碼更清晰,我們建議您改用 String.Compare 方法,指定 CultureInfo.CurrentCulture 涉及文化的操作或 CultureInfo.InvariantCulture 不涉及文化的操作。 如需示範如何使用 String.Compare 方法來執行區分文化特性和不區分文化特性比較的範例,請參閱 執行字串比較 Culture-Insensitive

Equals 方法

String.Equals方法可以輕鬆地判斷兩個字串是否相同。 這個區分大小寫的方法會傳回truefalse布爾值。 您可以從現有的類別使用,如下一個範例所示。 下列範例會使用Equals方法來判斷字串物件是否包含「Hello World」片語。

string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

這個範例會顯示 True 至主控台。

這個方法也可以當做靜態方法使用。 下列範例會使用靜態方法比較兩個字元串物件。

string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

這個範例會顯示 True 至主控台。

StartsWithEndsWith 方法

您可以使用 String.StartsWith 方法來判斷字串物件是否以包含另一個字串的相同字元開頭。 如果目前字串物件以傳遞的字串開頭,這個區分大小寫的方法將傳回true;如果不是,則傳回false。 下列範例會使用這個方法來判斷字串物件是否以 「Hello」 開頭。

string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

這個範例會顯示 True 至主控台。

方法 String.EndsWith 會將傳遞的字串與目前字串物件結尾的字元進行比較。 它也會傳回布爾值。 下列範例會使用 EndsWith 方法來檢查字串的結尾。

string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

這個範例會顯示 False 至主控台。

IndexOfLastIndexOf 方法

您可以使用 String.IndexOf 方法來判斷字串中第一次出現特定字元的位置。 這個區分大小寫的方法會從字串開頭開始計算,並使用以零起始的索引傳回傳遞字元的位置。 如果找不到字元,則會傳回 –1 的值。

下列範例會使用IndexOf方法來搜尋字串中第一個出現的 'l' 字元。

string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

這個範例會顯示 2 至主控台。

方法 String.LastIndexOfString.IndexOf 方法類似,不同之處在於它會傳回字串中最後一個出現特定字元的位置。 它會區分大小寫,並使用以零起始的索引。

下列範例使用LastIndexOf方法來搜尋字串中最後出現的「l」字元。

string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

這個範例會顯示 9 至主控台。

這兩種方法在與 String.Remove 方法搭配使用時很有用。 您可以使用 IndexOfLastIndexOf 方法來擷取字元的位置,然後將該位置 Remove 提供給方法,以移除以該字元開頭的字元或單字。

另請參閱