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
- Aanbevolen procedures voor het gebruik van tekenreeksen in .NET
- Eenvoudige tekenreeksbewerkingen
- Tekenreeksbewerkingen uitvoeren die niet gevoelig zijn voor cultuur
- Gewichtstabellen sorteren - gebruikt door .NET Framework en .NET Core 1.0-3.1 in Windows
- Standaardtabel met Unicode-sorteringselementen - gebruikt door .NET 5 op alle platforms en door .NET Core in Linux en macOS