Vergleichen von Zeichenfolgen

.NET Framework 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 ganzzahligen Wert zurück.

String.CompareTo

Vergleicht das aktuelle Zeichenfolgenobjekt mit einer anderen Zeichenfolge. Gibt einen ganzzahligen Wert 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.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 ganzzahligen Wert zurück.

String.LastIndexOf

Gibt ausgehend vom Ende der zu überprüfenden Zeichenfolge die Indexposition eines Zeichens oder einer Zeichenfolge zurück. Gibt einen ganzzahligen Wert zurück.

Compare

Die String.Compare-Methode bietet umfassende Möglichkeiten, um die aktuelle Zeichenfolge mit einer anderen Zeichenfolge oder einem anderen Objekt zu vergleichen. 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.

Werttyp

Bedingung

Eine negative ganze Zahl

strA ist kleiner als strB.

0

strA ist gleich strB.

Eine positive ganze Zahl

- oder -

1

Diese Instanz ist größer als value.

- oder -

value ist ein NULL-Verweis (Nothing in Visual Basic).

Wichtiger HinweisWichtig

Die Compare-Methode ist hauptsächlich für die Anordnung oder Sortierung von Zeichenfolgen bestimmt.Sie sollten die 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 Compare-Methode verwendet, um das Verhältnis der Werte von zwei Zeichenfolgen festzustellen.

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

In diesem Beispiel wird -1 auf der Konsole angezeigt.

Das vorhergehende Beispiel ist in der Standardeinstellung kulturabhängig. Für die Ausführung 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 Ausführung eines kulturunabhängigen Vergleichs finden Sie unter Durchführen kulturunabhängiger Zeichenfolgenvergleiche.

CompareOrdinal

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

Wichtiger HinweisWichtig

Die CompareOrdinal-Methode ist hauptsächlich für die Anordnung oder Sortierung von Zeichenfolgen bestimmt.Sie sollten die 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.

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

In diesem Beispiel wird -32 auf der Konsole angezeigt.

CompareTo

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 Compare-Methode zurückgegeben werden.

Wichtiger HinweisWichtig

Die CompareTo-Methode ist hauptsächlich für die Anordnung oder Sortierung von Zeichenfolgen bestimmt.Sie sollten die 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 CompareTo-Methode verwendet, um das MyString-Objekt mit dem OtherString-Objekt zu vergleichen.

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

In diesem Beispiel wird 1 an 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

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.

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

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.

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

In diesem Beispiel wird True auf der Konsole angezeigt.

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

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

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.

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

In diesem Beispiel wird False auf der Konsole angezeigt.

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

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

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 Position 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.

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

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 sowohl die IndexOf-Methode als auch die LastIndexOf -Methode verwenden, um die Position eines Zeichens abzurufen, und diese Position dann an die Remove-Methode zu übergeben, um ein Zeichen oder ein Wort zu entfernen, das mit diesem Zeichen beginnt.

Siehe auch

Weitere Ressourcen

Grundlegende Zeichenfolgenoperationen

Durchführen kulturunabhängiger Zeichenfolgenoperationen