Share via


比較字串

.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?"));
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!"));
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 );
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"));
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));
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"));
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"));
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"))
string MyString = "Hello World";
Console.WriteLine(MyString.IndexOf('l'));
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"))
string MyString = "Hello World";
Console.WriteLine(MyString.LastIndexOf('l'));
String^ MyString = "Hello World";
Console::WriteLine(MyString->LastIndexOf('l'));

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

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

請參閱

其他資源

基本字串作業

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