比較字串
.NET Framework 提供幾個比較字串值的方法。 下表列出並說明比較值的方法。
方法名稱 |
用法 |
---|---|
比較兩個字串的值。 傳回整數值。 |
|
比較兩個字串,不管本地文化特性。 傳回整數值。 |
|
將目前的字串物件與另一個字串加以比較。 傳回整數值。 |
|
判斷字串的開頭是否為傳入的字串。 傳回布林值。 |
|
判斷字串的結尾是否為傳入的字串。 傳回布林值。 |
|
判斷兩個字串是否相同。 傳回布林值。 |
|
從您正在檢查的字串開頭開始,傳回字元或字串的索引位置。 傳回整數值。 |
|
從您正在檢查的字串結尾開始,傳回字元或字串的索引位置。 傳回整數值。 |
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 方法可輕鬆地判斷出兩個字串是否相同。 這個區分大小寫的方法會傳回 True 或 False 的布林值。 您可以從現有的類別中使用這個方法,如下一個範例中所示。 下列範例會使用 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 方法一起搭配使用。 您可以使用 IndexOf 或 LastIndexOf 方法之一來擷取字元的位置,然後將這個位置提供給 Remove 方法,以便移除字元或是以該字元開頭的單字。