Porównywanie ciągów na platformie .NET
Platforma .NET udostępnia kilka metod porównywania wartości ciągów. W poniższej tabeli wymieniono i opisano metody porównywania wartości.
Nazwa metody | Używanie |
---|---|
String.Compare | Porównuje wartości dwóch ciągów. Zwraca wartość całkowitą. |
String.CompareOrdinal | Porównuje dwa ciągi bez względu na kulturę lokalną. Zwraca wartość całkowitą. |
String.CompareTo | Porównuje bieżący obiekt ciągu z innym ciągiem. Zwraca wartość całkowitą. |
String.StartsWith | Określa, czy ciąg zaczyna się od przekazanego ciągu. Zwraca wartość logiczną. |
String.EndsWith | Określa, czy ciąg kończy się przekazanym ciągiem. Zwraca wartość logiczną. |
String.Contains | Określa, czy znak lub ciąg występuje w innym ciągu. Zwraca wartość logiczną. |
String.Equals | Określa, czy dwa ciągi są takie same. Zwraca wartość logiczną. |
String.IndexOf | Zwraca położenie indeksu znaku lub ciągu, zaczynając od początku sprawdzanego ciągu. Zwraca wartość całkowitą. |
String.LastIndexOf | Zwraca położenie indeksu znaku lub ciągu, zaczynając od końca sprawdzanego ciągu. Zwraca wartość całkowitą. |
Compare
Metoda
Metoda statyczna String.Compare zapewnia dokładny sposób porównywania dwóch ciągów. Ta metoda jest świadoma kulturowo. Tej funkcji można użyć do porównania dwóch ciągów lub podciągów dwóch ciągów. Ponadto przeciążenia są zapewniane w odniesieniu do przypadków lub lekceważenia i wariancji kulturowej. W poniższej tabeli przedstawiono trzy wartości całkowite, które może zwrócić ta metoda.
Wartość zwracana | Stan |
---|---|
Ujemna liczba całkowita | Pierwszy ciąg poprzedza drugi ciąg w kolejności sortowania. — lub — Pierwszy ciąg to null . |
0 | Pierwszy ciąg i drugi ciąg są równe. — lub — Oba ciągi to null . |
Dodatnia liczba całkowita — lub — 1 |
Pierwszy ciąg jest zgodny z drugim ciągiem w kolejności sortowania. — lub — Drugi ciąg to null . |
Ważne
Metoda jest przeznaczona String.Compare głównie do użycia podczas porządkowania lub sortowania ciągów. Nie należy używać String.Compare metody do testowania równości (czyli jawnego wyszukiwania wartości zwracanej 0 bez względu na to, czy jeden ciąg jest mniejszy niż lub większy niż drugi). Zamiast tego, aby określić, czy dwa ciągi są równe, użyj String.Equals(String, String, StringComparison) metody .
W poniższym przykładzie użyto String.Compare metody w celu określenia względnych wartości dwóch ciągów.
String^ string1 = "Hello World!";
Console::WriteLine(String::Compare(string1, "Hello World?"));
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))
W tym przykładzie zostanie wyświetlona -1
konsola programu .
Powyższy przykład jest domyślnie uwzględniany w kulturze. Aby przeprowadzić porównanie ciągów niewrażliwych na kulturę, użyj przeciążenia String.Compare metody, która umożliwia określenie kultury do użycia przez podanie parametru kultury . Przykład, który pokazuje, jak używać String.Compare metody do przeprowadzania porównania bez uwzględniania kultury, zobacz Porównanie ciągów bez uwzględniania kultury.
CompareOrdinal
Metoda
Metoda String.CompareOrdinal porównuje dwa obiekty ciągów bez uwzględniania kultury lokalnej. Zwracane wartości tej metody są identyczne z wartościami zwracanymi przez metodę Compare
w poprzedniej tabeli.
Ważne
Metoda jest przeznaczona String.CompareOrdinal głównie do użycia podczas porządkowania lub sortowania ciągów. Nie należy używać String.CompareOrdinal metody do testowania równości (czyli jawnego wyszukiwania wartości zwracanej 0 bez względu na to, czy jeden ciąg jest mniejszy niż lub większy niż drugi). Zamiast tego, aby określić, czy dwa ciągi są równe, użyj String.Equals(String, String, StringComparison) metody .
W poniższym przykładzie użyto CompareOrdinal
metody do porównania wartości dwóch ciągów.
String^ string1 = "Hello World!";
Console::WriteLine(String::CompareOrdinal(string1, "hello world!"));
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))
W tym przykładzie zostanie wyświetlona -32
konsola programu .
CompareTo
Metoda
Metoda String.CompareTo porównuje ciąg, który bieżący obiekt ciągu hermetyzuje do innego ciągu lub obiektu. Zwracane wartości tej metody są identyczne z wartościami zwracanymi przez metodę String.Compare w poprzedniej tabeli.
Ważne
Metoda jest przeznaczona String.CompareTo głównie do użycia podczas porządkowania lub sortowania ciągów. Nie należy używać String.CompareTo metody do testowania równości (czyli jawnego wyszukiwania wartości zwracanej 0 bez względu na to, czy jeden ciąg jest mniejszy niż lub większy niż drugi). Zamiast tego, aby określić, czy dwa ciągi są równe, użyj String.Equals(String, String, StringComparison) metody .
W poniższym przykładzie użyto String.CompareTo metody do porównania string1
obiektu z obiektem string2
.
String^ string1 = "Hello World";
String^ string2 = "Hello World!";
int MyInt = string1->CompareTo(string2);
Console::WriteLine( MyInt );
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)
W tym przykładzie zostanie wyświetlona -1
konsola programu .
Wszystkie przeciążenia String.CompareTo metody domyślnie wykonują porównania wrażliwe na kulturę i wielkość liter. Nie podano przeciążeń tej metody, które umożliwiają przeprowadzanie porównania bez uwzględniania kultury. W celu zapewnienia przejrzystości kodu zalecamy użycie String.Compare
metody , określając CultureInfo.CurrentCulture operacje wrażliwe na kulturę lub CultureInfo.InvariantCulture operacje niewrażliwe na kulturę. Aby zapoznać się z przykładami, które pokazują, jak używać String.Compare
metody do przeprowadzania porównań uwzględniających kulturę i niewrażliwych na kulturę, zobacz Performing Culture-Insensitive String Comparisons (Wykonywanie porównań ciągów bez uwzględniania kultury).
Equals
Metoda
String.Equals Metoda może łatwo określić, czy dwa ciągi są takie same. Ta metoda uwzględniająca wielkość liter zwraca true
wartość logiczną lub .false
Można go użyć z istniejącej klasy, jak pokazano w następnym przykładzie. W poniższym przykładzie użyto Equals
metody w celu określenia, czy obiekt ciągu zawiera frazę "Hello World".
String^ string1 = "Hello World";
Console::WriteLine(string1->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"))
W tym przykładzie zostanie wyświetlona True
konsola programu .
Ta metoda może być również używana jako metoda statyczna. Poniższy przykład porównuje dwa obiekty ciągów przy użyciu metody statycznej.
String^ string1 = "Hello World";
String^ string2 = "Hello World";
Console::WriteLine(String::Equals(string1, string2));
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))
W tym przykładzie zostanie wyświetlona True
konsola programu .
StartsWith
i EndsWith
metody
Za pomocą String.StartsWith metody można określić, czy obiekt ciągu zaczyna się od tych samych znaków, które obejmują inny ciąg. Ta metoda uwzględniająca wielkość liter zwraca true
wartość, jeśli bieżący obiekt ciągu zaczyna się od przekazanego ciągu i false
jeśli nie. W poniższym przykładzie użyto tej metody, aby określić, czy obiekt ciągu zaczyna się od "Hello".
String^ string1 = "Hello World";
Console::WriteLine(string1->StartsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))
W tym przykładzie zostanie wyświetlona True
konsola programu .
Metoda String.EndsWith porównuje przekazany ciąg z znakami istniejącymi na końcu bieżącego obiektu ciągu. Zwraca również wartość logiczną. Poniższy przykład sprawdza koniec ciągu przy użyciu EndsWith
metody .
String^ string1 = "Hello World";
Console::WriteLine(string1->EndsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))
W tym przykładzie zostanie wyświetlona False
konsola programu .
IndexOf
i LastIndexOf
metody
Za pomocą String.IndexOf metody można określić położenie pierwszego wystąpienia określonego znaku w ciągu. Ta metoda wrażliwa na wielkość liter rozpoczyna się od początku ciągu i zwraca pozycję przekazanego znaku przy użyciu indeksu zerowego. Jeśli nie można odnaleźć znaku, zwracana jest wartość –1.
W poniższym przykładzie użyto IndexOf
metody , aby wyszukać pierwsze wystąpienie znaku "l
" w ciągu.
String^ string1 = "Hello World";
Console::WriteLine(string1->IndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))
W tym przykładzie zostanie wyświetlona 2
konsola programu .
Metoda jest podobna String.LastIndexOf do String.IndexOf
metody, z tą różnicą, że zwraca pozycję ostatniego wystąpienia określonego znaku w ciągu. Uwzględniana jest wielkość liter i używa indeksu opartego na zerach.
W poniższym przykładzie użyto LastIndexOf
metody , aby wyszukać ostatnie wystąpienie znaku "l
" w ciągu.
String^ string1 = "Hello World";
Console::WriteLine(string1->LastIndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))
W tym przykładzie zostanie wyświetlona 9
konsola programu .
Obie metody są przydatne w połączeniu String.Remove z metodą . Możesz użyć metod IndexOf
lub LastIndexOf
, aby pobrać położenie znaku, a następnie podać tę pozycję do Remove
metody, aby usunąć znak lub wyraz rozpoczynający się od tego znaku.
Zobacz też
- Najlepsze rozwiązania dotyczące używania ciągów na platformie .NET
- Podstawowe operacje na ciągach
- Wykonywanie operacji ciągów bez uwzględniania kultury
- Sortowanie tabel wagi — używane przez programy .NET Framework i .NET Core 1.0-3.1 w systemie Windows
- Domyślna tabela elementów sortowania Unicode — używana przez platformę .NET 5 na wszystkich platformach oraz przez platformę .NET Core w systemach Linux i macOS