Share via


Tekenreeksen vergelijken in .NET

.NET biedt verschillende methoden om de waarden van tekenreeksen te vergelijken. In de volgende tabel worden de methoden voor waardevergelijking vermeld en beschreven.

Methodenaam Gebruik
String.Compare Vergelijkt de waarden van twee tekenreeksen. Retourneert een geheel getal.
String.CompareOrdinal Vergelijkt twee tekenreeksen zonder rekening te houden met de lokale cultuur. Retourneert een geheel getal.
String.CompareTo Vergelijkt het huidige tekenreeksobject met een andere tekenreeks. Retourneert een geheel getal.
String.StartsWith Bepaalt of een tekenreeks begint met de doorgegeven tekenreeks. Retourneert een Booleaanse waarde.
String.EndsWith Bepaalt of een tekenreeks eindigt op de doorgegeven tekenreeks. Retourneert een Booleaanse waarde.
String.Contains Bepaalt of een teken of tekenreeks binnen een andere tekenreeks voorkomt. Retourneert een Booleaanse waarde.
String.Equals Bepaalt of twee tekenreeksen hetzelfde zijn. Retourneert een Booleaanse waarde.
String.IndexOf Retourneert de indexpositie van een teken of tekenreeks, beginnend vanaf het begin van de tekenreeks die u onderzoekt. Retourneert een geheel getal.
String.LastIndexOf Retourneert de indexpositie van een teken of tekenreeks, beginnend vanaf het einde van de tekenreeks die u onderzoekt. Retourneert een geheel getal.

Compare Methode

De statische String.Compare methode biedt een grondige manier om twee tekenreeksen te vergelijken. Deze methode is cultureel bewust. U kunt deze functie gebruiken om twee tekenreeksen of subtekenreeksen van twee tekenreeksen te vergelijken. Daarnaast worden overbelastingen geboden die rekening houden met hoofdletters of kleine letters en culturele afwijkingen. In de volgende tabel ziet u de drie gehele getallen die met deze methode kunnen worden geretourneerd.

Retourwaarde Conditie
Een negatief geheel getal De eerste tekenreeks gaat vooraf aan de tweede tekenreeks in de sorteervolgorde.

– of –

De eerste tekenreeks is null.
0 De eerste tekenreeks en de tweede tekenreeks zijn gelijk.

– of –

Beide tekenreeksen zijn null.
Een positief geheel getal

– of –

1
De eerste tekenreeks volgt de tweede tekenreeks in de sorteervolgorde.

– of –

De tweede tekenreeks is null.

Belangrijk

De String.Compare methode is voornamelijk bedoeld voor gebruik bij het ordenen of sorteren van tekenreeksen. U moet de String.Compare methode niet gebruiken om te testen op gelijkheid (om expliciet te zoeken naar een retourwaarde van 0, zonder rekening te houden met of één tekenreeks kleiner is dan of groter is dan de andere). Gebruik in plaats daarvan de String.Equals(String, String, StringComparison) methode om te bepalen of twee tekenreeksen gelijk zijn.

In het volgende voorbeeld wordt de String.Compare methode gebruikt om de relatieve waarden van twee tekenreeksen te bepalen.

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 dit voorbeeld wordt de console weergegeven -1 .

Het voorgaande voorbeeld is standaard cultuurgevoelig. Als u een cultuurgevoelige tekenreeksvergelijking wilt uitvoeren, gebruikt u een overbelasting van de String.Compare methode waarmee u de cultuur kunt opgeven die moet worden gebruikt door een cultuurparameter op te geven. Zie cultuurgevoelige tekenreeksvergelijkingen voor een voorbeeld dat laat zien hoe u de String.Compare methode gebruikt om een cultuurgevoelige vergelijking uit te voeren.

CompareOrdinal Methode

De String.CompareOrdinal methode vergelijkt twee tekenreeksobjecten zonder rekening te houden met de lokale cultuur. De retourwaarden van deze methode zijn identiek aan de waarden die worden geretourneerd door de Compare methode in de vorige tabel.

Belangrijk

De String.CompareOrdinal methode is voornamelijk bedoeld voor gebruik bij het ordenen of sorteren van tekenreeksen. U moet de String.CompareOrdinal methode niet gebruiken om te testen op gelijkheid (om expliciet te zoeken naar een retourwaarde van 0, zonder rekening te houden met of één tekenreeks kleiner is dan of groter is dan de andere). Gebruik in plaats daarvan de String.Equals(String, String, StringComparison) methode om te bepalen of twee tekenreeksen gelijk zijn.

In het volgende voorbeeld wordt de CompareOrdinal methode gebruikt om de waarden van twee tekenreeksen te vergelijken.

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 dit voorbeeld wordt de console weergegeven -32 .

CompareTo Methode

De String.CompareTo methode vergelijkt de tekenreeks die het huidige tekenreeksobject inkapselt met een andere tekenreeks of een ander object. De retourwaarden van deze methode zijn identiek aan de waarden die worden geretourneerd door de String.Compare methode in de vorige tabel.

Belangrijk

De String.CompareTo methode is voornamelijk bedoeld voor gebruik bij het ordenen of sorteren van tekenreeksen. U moet de String.CompareTo methode niet gebruiken om te testen op gelijkheid (om expliciet te zoeken naar een retourwaarde van 0, zonder rekening te houden met of één tekenreeks kleiner is dan of groter is dan de andere). Gebruik in plaats daarvan de String.Equals(String, String, StringComparison) methode om te bepalen of twee tekenreeksen gelijk zijn.

In het volgende voorbeeld wordt de String.CompareTo methode gebruikt om het string1 object te vergelijken met het string2 object.

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 dit voorbeeld wordt de console weergegeven -1 .

Alle overbelastingen van de String.CompareTo methode voeren standaard cultuurgevoelige en hoofdlettergevoelige vergelijkingen uit. Er worden geen overbelastingen van deze methode geboden waarmee u een cultuurgevoelige vergelijking kunt uitvoeren. Voor de duidelijkheid van code raden we u aan in plaats daarvan de String.Compare methode te gebruiken, waarbij u opgeeft CultureInfo.CurrentCulture voor cultuurgevoelige bewerkingen of CultureInfo.InvariantCulture voor cultuurgevoelige bewerkingen. Voor voorbeelden die laten zien hoe u de String.Compare methode gebruikt om zowel cultuurgevoelige als cultuurgevoelige vergelijkingen uit te voeren, raadpleegt u Het uitvoeren van cultuurgevoelige tekenreeksvergelijkingen.

Equals Methode

De String.Equals methode kan eenvoudig bepalen of twee tekenreeksen hetzelfde zijn. Deze hoofdlettergevoelige methode retourneert een true of false booleaanse waarde. Deze kan worden gebruikt vanuit een bestaande klasse, zoals wordt geïllustreerd in het volgende voorbeeld. In het volgende voorbeeld wordt de Equals methode gebruikt om te bepalen of een tekenreeksobject de woordgroep 'Hallo wereld' bevat.

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 dit voorbeeld wordt de console weergegeven True .

Deze methode kan ook worden gebruikt als een statische methode. In het volgende voorbeeld worden twee tekenreeksobjecten vergeleken met behulp van een statische methode.

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 dit voorbeeld wordt de console weergegeven True .

StartsWith en EndsWith methoden

U kunt de String.StartsWith methode gebruiken om te bepalen of een tekenreeksobject begint met dezelfde tekens die een andere tekenreeks omvatten. Deze hoofdlettergevoelige methode retourneert true als het huidige tekenreeksobject begint met de doorgegeven tekenreeks en false als dit niet het geval is. In het volgende voorbeeld wordt deze methode gebruikt om te bepalen of een tekenreeksobject begint met 'Hallo'.

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 dit voorbeeld wordt de console weergegeven True .

Met String.EndsWith de methode wordt een doorgegeven tekenreeks vergeleken met de tekens die aan het einde van het huidige tekenreeksobject bestaan. Er wordt ook een Booleaanse waarde geretourneerd. In het volgende voorbeeld wordt het einde van een tekenreeks gecontroleerd met behulp van de EndsWith methode.

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 dit voorbeeld wordt de console weergegeven False .

IndexOf en LastIndexOf methoden

U kunt de String.IndexOf methode gebruiken om de positie te bepalen van het eerste exemplaar van een bepaald teken in een tekenreeks. Deze hoofdlettergevoelige methode begint te tellen vanaf het begin van een tekenreeks en retourneert de positie van een doorgegeven teken met behulp van een op nul gebaseerde index. Als het teken niet kan worden gevonden, wordt een waarde van –1 geretourneerd.

In het volgende voorbeeld wordt de IndexOf methode gebruikt om te zoeken naar het eerste exemplaar van het teken 'l' in een tekenreeks.

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 dit voorbeeld wordt de console weergegeven 2 .

De String.LastIndexOf methode is vergelijkbaar met de String.IndexOf methode, behalve dat deze de positie retourneert van het laatste exemplaar van een bepaald teken in een tekenreeks. Het is hoofdlettergevoelig en maakt gebruik van een op nul gebaseerde index.

In het volgende voorbeeld wordt de LastIndexOf methode gebruikt om te zoeken naar het laatste exemplaar van het teken 'l' in een tekenreeks.

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 dit voorbeeld wordt de console weergegeven 9 .

Beide methoden zijn handig wanneer ze worden gebruikt in combinatie met de String.Remove methode. U kunt de IndexOf of LastIndexOf methoden gebruiken om de positie van een teken op te halen en die positie vervolgens op te geven aan de Remove methode om een teken of een woord te verwijderen dat met dat teken begint.

Zie ook