共用方式為


比較字串

更新:2007 年 11 月

.NET Framework 提供幾個比較字串值的方法。下表列出並說明比較值的方法。

方法名稱

使用

String.Compare

比較兩個字串的值。傳回整數值。

String.CompareOrdinal

比較兩個字串,不管本地文化特性。傳回整數值。

String.CompareTo

將目前的字串物件與另一個字串加以比較。傳回整數值。

String.StartsWith

判斷字串的開頭是否為傳入的字串。傳回布林值。

String.EndsWith

判斷字串的結尾是否為傳入的字串。傳回布林值。

String.Equals

判斷兩個字串是否相同。傳回布林值。

String.IndexOf

從您正在檢查的字串開頭開始,傳回字元或字串的索引位置。傳回整數值。

String.LastIndexOf

從您正在檢查的字串結尾開始,傳回字元或字串的索引位置。傳回整數值。

Compare

String.Compare 方法提供了一個完整的方式,可將目前的字串物件與另一個字串或物件加以比較。這個方法與文化特性相關。您可以使用這個函式來比較兩個字串或兩個字串的子字串。此外,還提供了與大小寫和文化特性變化相關或無關的多載。下表會顯示這個方法可能傳回來的三個整數值。

實值型別

條件

負整數

strA 小於 strB

0

strA 等於 strB

正整數

-或-

1

這個執行個體大於 value

-或-

value 是 null 參考 (Visual Basic 中的 Nothing)

重要事項:

Compare 方法主要是在排序字串時使用。您不應使用 Compare 方法測試是否相等 (也就是說,明確搜尋傳回值 0,與其中一個字串小於或大於另一個字串無關)。若要判斷兩個字串是否相等,請使用 String.Equals(String, String, StringComparison) 方法來代替。

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

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

這個範例會將 -1 顯示在主控台上。

根據預設,之前的範例會區分文化特性的。若要執行不區分文化特性的字串比較,則在使用 String.Compare 方法的多載時,可提供 culture 參數以指定您所要使用的文化。如需範例來示範如何使用 String.Compare 方法,以執行不區分文化特性的字串比較,請參閱執行不區分文化特性的字串比較

CompareOrdinal

String.CompareOrdinal 方法會比較兩個字串物件,而不考慮本地文化特性。這個方法的傳回值與先前表格中 Compare 方法傳回來的值相同。

重要事項:

CompareOrdinal 方法主要是在排序字串時使用。您不應使用 CompareOrdinal 方法測試是否相等 (也就是說,明確搜尋傳回值 0,與其中一個字串小於或大於另一個字串無關)。若要判斷兩個字串是否相等,請使用 String.Equals(String, String, StringComparison) 方法來代替。

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

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

這個範例會將 -32 顯示在主控台上。

CompareTo

String.CompareTo 方法會將目前字串物件所包含的字串與另一個字串或物件加以比較。這個方法的傳回值與先前表格中 Compare 方法傳回來的值相同。

重要事項:

CompareTo 方法主要是在排序字串時使用。您不應使用 CompareTo 方法測試是否相等 (也就是說,明確搜尋傳回值 0,與其中一個字串小於或大於另一個字串無關)。若要判斷兩個字串是否相等,請使用 String.Equals(String, String, StringComparison) 方法來代替。

下列範例會使用 CompareTo 方法,將 MyString 物件與 OtherString 物件加以比較。

Dim MyString As String = "Hello World"
Dim OtherString As String = "Hello World!"
Dim MyInt As Integer = MyString.CompareTo(OtherString)
Console.WriteLine(MyInt)
String MyString = "Hello World";
String OtherString = "Hello World!";
int MyInt = MyString.CompareTo(OtherString);    
Console.WriteLine( MyInt );

這個範例會將 1 顯示在主控台上。

根據預設,String.CompareTo 方法的所有多載都會執行區分文化特性和區分大小寫的比較。這個方法的多載都不允許您執行不區分文化特性的字串比較。為了使程式碼更為明確,建議您改用 String.Compare 方法,指定 CultureInfo.CurrentCulture 用於區分文化特性的作業,或者指定 CultureInfo.InvariantCulture 用於不區分文化特性的作業。如需範例來示範如何使用 String.Compare 方法,以執行區分文化特性和不區分文化特性的比較,請參閱執行不區分文化特性的字串比較

Equals

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

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

這個範例會將 True 顯示在主控台上。

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

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

這個範例會將 True 顯示在主控台上。

StartsWith 和 EndsWith

您可以使用 String.StartsWith 方法來判斷字串物件的開頭幾個字元是否包含另一字串。如果目前的字串物件以傳遞的字串開頭,這個區分大小寫的方法會傳回 True,否則的話會傳回 False。下列範例會使用這個方法來判斷字串物件是否以 "Hello" 開頭。

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

這個範例會將 True 顯示在主控台上。

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

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

這個範例會將 False 顯示在主控台上。

IndexOf 和 LastIndexOf

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

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

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

這個範例會將 2 顯示在主控台上。

String.LastIndexOf 方法和 String.IndexOf 方法類似,只不過它會傳回字串中特定字元最後一次出現的位置。它會區分大小寫,而且使用以零起始的索引。

下列範例會使用 LastIndexOf 方法來搜尋字串中最後一次出現的 "l" 字元。

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

這個範例會將 9 顯示在主控台上。

這兩個方法都可以和 String.Remove 方法一起搭配使用。您可以使用 IndexOfLastIndexOf 方法之一來擷取字元的位置,然後將這個位置提供給 Remove 方法,以便移除字元或是以該字元開頭的單字。

請參閱

其他資源

基本字串作業

執行不區分文化特性的字串作業