Vergleichen von Zeichenfolgen in .NET

.NET stellt mehrere Methoden bereit, um Werte von Zeichenfolgen zu vergleichen. In der folgenden Tabelle werden die Methoden zum Vergleichen von Werten aufgeführt und beschrieben.

Methodenname Verwendung
String.Compare Vergleicht die Werte zweier Zeichenfolgen. Gibt einen Ganzzahlwert zurück.
String.CompareOrdinal Vergleicht zwei Zeichenfolgen, ohne die Einstellungen der lokalen Kultur zu berücksichtigen. Gibt einen Ganzzahlwert zurück.
String.CompareTo Vergleicht das aktuelle Zeichenfolgenobjekt mit einer anderen Zeichenfolge. Gibt einen Ganzzahlwert zurück.
String.StartsWith Stellt fest, ob eine Zeichenfolge mit der übergebenen Zeichenfolge beginnt. Gibt einen booleschen Wert zurück.
String.EndsWith Stellt fest, ob eine Zeichenfolge mit der übergebenen Zeichenfolge endet. Gibt einen booleschen Wert zurück.
String.Contains Bestimmt, ob ein Zeichen oder eine Zeichenfolge innerhalb einer anderen Zeichenfolge vorkommt. Gibt einen booleschen Wert zurück.
String.Equals Stellt fest, ob zwei Zeichenfolgen identisch sind. Gibt einen booleschen Wert zurück.
String.IndexOf Gibt ausgehend vom Anfang der zu überprüfenden Zeichenfolge die Indexposition eines Zeichens oder einer Zeichenfolge zurück. Gibt einen Ganzzahlwert zurück.
String.LastIndexOf Gibt ausgehend vom Ende der zu überprüfenden Zeichenfolge die Indexposition eines Zeichens oder einer Zeichenfolge zurück. Gibt einen Ganzzahlwert zurück.

Compare-Methode

Die statische String.Compare -Methode bietet umfassende Möglichkeiten zum Vergleichen von zwei Zeichenfolgen. Bei dieser Methode werden unterschiedliche Kulturen berücksichtigt. Sie können diese Funktion verwenden, um zwei Zeichenfolgen oder zwei untergeordnete Zeichenfolgen zweier Zeichenfolgen miteinander zu vergleichen. Zusätzlich sind Überladungen verfügbar, mit denen die Groß-/Kleinschreibung sowie abweichende Kulturen berücksichtigt bzw. ignoriert werden können. In der folgenden Tabelle sind die drei ganzzahligen Werte aufgeführt, die von dieser Methode zurückgegeben werden können.

Rückgabewert Bedingung
Eine negative ganze Zahl Die erste Zeichenfolge steht in der Sortierreihenfolge vor der zweiten Zeichenfolge.

- oder -

Die erste Zeichenfolge ist null.
0 Die erste Zeichenfolge und die zweite Zeichenfolge sind gleich.

- oder -

Beide Zeichenfolgen sind null.
Eine positive ganze Zahl

- oder -

1
Die erste Zeichenfolge steht in der Sortierreihenfolge hinter der zweiten Zeichenfolge.

- oder -

Die zweite Zeichenfolge ist null.

Wichtig

Die String.Compare -Methode ist hauptsächlich für die Anordnung oder Sortierung von Zeichenfolgen bestimmt. Sie sollten die String.Compare -Methode nicht verwenden, um einen Übereinstimmungstest auszuführen (also um explizit nach dem Rückgabewert 0 zu suchen, ohne dass dabei berücksichtigt wird, ob eine Zeichenfolge kleiner oder größer als die andere ist). Um festzustellen, ob zwei Zeichenfolgen gleich sind, verwenden Sie stattdessen die String.Equals(String, String, StringComparison) -Methode.

Im folgenden Beispiel wird die String.Compare -Methode verwendet, um die relativen Werte von zwei Zeichenfolgen zu bestimmen.

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?"))

In diesem Beispiel wird -1 auf der Konsole angezeigt.

Das vorhergehende Beispiel ist in der Standardeinstellung kulturabhängig. Zum Durchführen eines kulturunabhängigen Zeichenfolgenvergleichs verwenden Sie eine Überladung der String.Compare -Methode, bei der Sie die zu verwendende Kultur festlegen können, indem Sie einen culture -Parameter angeben. Ein Beispiel für die Verwendung der String.Compare-Methode zur Durchführung eines kulturunabhängigen Vergleichs finden Sie unter Kulturunabhängige Zeichenfolgenvergleiche.

CompareOrdinal-Methode

Mit der String.CompareOrdinal -Methode werden zwei Zeichenfolgenobjekte ohne Berücksichtigung der lokalen Kultur verglichen. Die Rückgabewerte dieser Methode stimmen mit den Werten überein, die von der in der vorherigen Tabelle beschriebenen Compare -Methode zurückgegeben werden.

Wichtig

Die String.CompareOrdinal -Methode ist hauptsächlich für die Anordnung oder Sortierung von Zeichenfolgen bestimmt. Sie sollten die String.CompareOrdinal -Methode nicht verwenden, um einen Übereinstimmungstest auszuführen (also um explizit nach dem Rückgabewert 0 zu suchen, ohne dass dabei berücksichtigt wird, ob eine Zeichenfolge kleiner oder größer als die andere ist). Um festzustellen, ob zwei Zeichenfolgen gleich sind, verwenden Sie stattdessen die String.Equals(String, String, StringComparison) -Methode.

Im folgenden Beispiel wird die CompareOrdinal-Methode verwendet, um die Werte von zwei Zeichenfolgen zu vergleichen.

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!"))

In diesem Beispiel wird -32 auf der Konsole angezeigt.

CompareTo-Methode

Mit der String.CompareTo -Methode wird die im aktuellen Zeichenfolgenobjekt gekapselte Zeichenfolge mit einer anderen Zeichenfolge oder einem anderen Objekt verglichen. Die Rückgabewerte dieser Methode stimmen mit den Werten überein, die von der in der vorherigen Tabelle beschriebenen String.Compare -Methode zurückgegeben werden.

Wichtig

Die String.CompareTo -Methode ist hauptsächlich für die Anordnung oder Sortierung von Zeichenfolgen bestimmt. Sie sollten die String.CompareTo -Methode nicht verwenden, um einen Übereinstimmungstest auszuführen (also um explizit nach dem Rückgabewert 0 zu suchen, ohne dass dabei berücksichtigt wird, ob eine Zeichenfolge kleiner oder größer als die andere ist). Um festzustellen, ob zwei Zeichenfolgen gleich sind, verwenden Sie stattdessen die String.Equals(String, String, StringComparison) -Methode.

Im folgenden Beispiel wird die String.CompareTo -Methode verwendet, um das string1 -Objekt mit dem string2 -Objekt zu vergleichen.

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)

In diesem Beispiel wird -1 auf der Konsole angezeigt.

Alle Überladungen der String.CompareTo -Methode führen in der Standardeinstellung kulturabhängige Vergleiche durch, bei denen die Groß- und Kleinschreibung berücksichtigt wird. Es werden keine Überladungen dieser Methode bereitgestellt, mit denen Sie einen kulturunabhängigen Vergleich durchführen können. Aus Gründen der Übersichtlichkeit des Codes wird empfohlen, stattdessen die String.Compare -Methode zu verwenden und für kulturabhängige Operationen CultureInfo.CurrentCulture sowie für kulturunabhängige Operationen CultureInfo.InvariantCulture festzulegen. Beispiele für die Verwendung der String.Compare -Methode zur Durchführung von kulturabhängigen und kulturunabhängigen Vergleichen finden Sie unter Durchführen kulturunabhängiger Zeichenfolgenvergleiche.

Equals-Methode

Mit der String.Equals -Methode lässt sich auf einfache Weise feststellen, ob zwei Zeichenfolgen identisch sind. Diese Methode, bei der die Groß-/Kleinschreibung beachtet wird, gibt den booleschen Wert true oder false zurück. Wie das nächste Beispiel zeigt, kann die Methode einer bestehenden Klasse verwendet werden. Im folgenden Beispiel wird mithilfe der Equals-Methode festgestellt, ob ein Zeichenfolgenobjekt den Ausdruck „Hello World“ enthält.

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"))

In diesem Beispiel wird True auf der Konsole angezeigt.

Diese Methode kann auch als statische Methode verwendet werden. Im folgenden Beispiel werden zwei Zeichenfolgenobjekte mithilfe einer statischen Methode verglichen.

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))

In diesem Beispiel wird True auf der Konsole angezeigt.

Die Methoden StartsWith und EndsWith

Mit der String.StartsWith -Methode können Sie feststellen, ob ein Zeichenfolgenobjekt mit denselben Zeichen beginnt, die eine andere Zeichenfolge enthält. Diese Methode, bei der die Groß-/Kleinschreibung beachtet wird, gibt true zurück, wenn das aktuelle Zeichenfolgenobjekt mit der übergebenen Zeichenfolge beginnt, und sie gibt false zurück, wenn dies nicht der Fall ist. Im folgenden Beispiel wird mithilfe dieser Methode festgestellt, ob ein Zeichenfolgenobjekt mit "Hello" beginnt.

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"))

In diesem Beispiel wird True auf der Konsole angezeigt.

Bei der String.EndsWith -Methode wird eine übergebene Zeichenfolge mit den Zeichen am Ende des aktuellen Zeichenfolgenobjekts verglichen. Auch sie gibt einen booleschen Wert zurück. Im folgenden Beispiel wird das Ende einer Zeichenfolge mithilfe der EndsWith-Methode überprüft.

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"))

In diesem Beispiel wird False auf der Konsole angezeigt.

Die Methoden IndexOf und LastIndexOf

Mit der String.IndexOf -Methode können Sie die Position feststellen, an der ein bestimmtes Zeichen in einer Zeichenfolge erstmalig vorkommt. Bei dieser Methode, die die Groß-/Kleinschreibung beachtet, beginnt die Zählung am Anfang einer Zeichenfolge; sie gibt die Position eines übergebenen Zeichens auf der Grundlage eines nullbasierten Indizes zurück. Wenn das Zeichen nicht gefunden wird, wird der Wert –1 zurückgegeben.

Im folgenden Beispiel wird die IndexOf-Methode verwendet, um in einer Zeichenfolge nach dem ersten Vorkommnis des Zeichens 'l' zu suchen.

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"))

In diesem Beispiel wird 2 auf der Konsole angezeigt.

Die String.LastIndexOf-Methode ist vergleichbar mit der String.IndexOf-Methode, außer dass sie die Stelle zurückgibt, an der ein bestimmtes Zeichen innerhalb einer Zeichenfolge letztmalig vorkommt. Sie beachtet die Groß-/Kleinschreibung und verwendet einen nullbasierten Index.

Im folgenden Beispiel wird die LastIndexOf-Methode verwendet, um in einer Zeichenfolge nach dem letzten Vorkommnis des Zeichens 'l' zu suchen.

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"))

In diesem Beispiel wird 9 auf der Konsole angezeigt.

Beide Methoden sind hilfreich, wenn sie in Verbindung mit der String.Remove -Methode verwendet werden. Sie können die IndexOf -Methode oder die LastIndexOf -Methode verwenden, um die Position eines Zeichens abzurufen, und diese Position dann an die Remove -Methode übergeben, um ein Zeichen oder ein Wort zu entfernen, das mit diesem Zeichen beginnt.

Weitere Informationen