Jämför strängar i .NET

.NET innehåller flera metoder för att jämföra värdena för strängar. I följande tabell visas och beskrivs metoderna för värdejämförelse.

Metodnamn Använd
String.Compare Jämför värdena för två strängar. Returnerar ett heltalsvärde.
String.CompareOrdinal Jämför två strängar utan hänsyn till lokal kultur. Returnerar ett heltalsvärde.
String.CompareTo Jämför det aktuella strängobjektet med en annan sträng. Returnerar ett heltalsvärde.
String.StartsWith Avgör om en sträng börjar med att strängen skickas. Returnerar ett booleskt värde.
String.EndsWith Avgör om en sträng slutar med strängen skickad. Returnerar ett booleskt värde.
String.Contains Avgör om ett tecken eller en sträng inträffar i en annan sträng. Returnerar ett booleskt värde.
String.Equals Avgör om två strängar är samma. Returnerar ett booleskt värde.
String.IndexOf Returnerar indexpositionen för ett tecken eller en sträng från början av strängen som du undersöker. Returnerar ett heltalsvärde.
String.LastIndexOf Returnerar indexpositionen för ett tecken eller en sträng från slutet av strängen som du undersöker. Returnerar ett heltalsvärde.

Compare Metod

Den statiska String.Compare metoden ger ett grundligt sätt att jämföra två strängar. Den här metoden är kulturellt medveten. Du kan använda den här funktionen för att jämföra två strängar eller delsträngar med två strängar. Dessutom tillhandahålls överlagringar som beaktar eller bortser från fall och kulturell varians. I följande tabell visas de tre heltalsvärden som den här metoden kan returnera.

Returvärde Villkor
Ett negativt heltal Den första strängen föregår den andra strängen i sorteringsordningen.

-eller-

Den första strängen är null.
0 Den första strängen och den andra strängen är lika.

-eller-

Båda strängarna är null.
Ett positivt heltal

-eller-

1
Den första strängen följer den andra strängen i sorteringsordningen.

-eller-

Den andra strängen är null.

Viktigt!

Metoden String.Compare är främst avsedd att användas vid beställning eller sortering av strängar. Du bör inte använda String.Compare metoden för att testa likhet (det vill: för att uttryckligen söka efter ett returvärde på 0 utan hänsyn till om en sträng är mindre än eller större än den andra). Använd i stället metoden för att avgöra om två strängar är lika String.Equals(String, String, StringComparison) med.

I följande exempel används String.Compare metoden för att fastställa de relativa värdena för två strängar.

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

Det här exemplet visas -1 för konsolen.

Föregående exempel är kulturkänsligt som standard. Om du vill utföra en kulturokänslig strängjämförelse använder du en överlagring av String.Compare metoden som gör att du kan ange vilken kultur som ska användas genom att ange en kulturparameter . Ett exempel som visar hur du använder String.Compare metoden för att utföra en kulturokänslig jämförelse finns i Jämförelse av kulturokänsliga strängar.

CompareOrdinal Metod

Metoden String.CompareOrdinal jämför två strängobjekt utan att ta hänsyn till den lokala kulturen. Returvärdena för den här metoden är identiska med de värden som returneras av Compare metoden i föregående tabell.

Viktigt!

Metoden String.CompareOrdinal är främst avsedd att användas vid beställning eller sortering av strängar. Du bör inte använda String.CompareOrdinal metoden för att testa likhet (det vill: för att uttryckligen söka efter ett returvärde på 0 utan hänsyn till om en sträng är mindre än eller större än den andra). Använd i stället metoden för att avgöra om två strängar är lika String.Equals(String, String, StringComparison) med.

I följande exempel används CompareOrdinal metoden för att jämföra värdena för två strängar.

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

Det här exemplet visas -32 för konsolen.

CompareTo Metod

Metoden String.CompareTo jämför strängen som det aktuella strängobjektet kapslar in med en annan sträng eller ett annat objekt. Returvärdena för den här metoden är identiska med de värden som returneras av String.Compare metoden i föregående tabell.

Viktigt!

Metoden String.CompareTo är främst avsedd att användas vid beställning eller sortering av strängar. Du bör inte använda String.CompareTo metoden för att testa likhet (det vill: för att uttryckligen söka efter ett returvärde på 0 utan hänsyn till om en sträng är mindre än eller större än den andra). Använd i stället metoden för att avgöra om två strängar är lika String.Equals(String, String, StringComparison) med.

I följande exempel används String.CompareTo metoden för att jämföra objektet med string1 objektet 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)

Det här exemplet visas -1 för konsolen.

Alla överlagringar av String.CompareTo metoden utför kulturkänsliga och skiftlägeskänsliga jämförelser som standard. Inga överlagringar av den här metoden tillhandahålls som gör att du kan utföra en kulturokänslig jämförelse. För tydlighetens String.Compare kod rekommenderar vi att du använder metoden i stället, anger CultureInfo.CurrentCulture för kulturkänsliga åtgärder eller CultureInfo.InvariantCulture för kulturokänsliga åtgärder. Exempel som visar hur du använder String.Compare metoden för att utföra både kulturkänsliga och kulturokänsliga jämförelser finns i Utföra kulturkänsliga strängjämförelser.

Equals Metod

Metoden String.Equals kan enkelt avgöra om två strängar är samma. Den här skiftlägeskänsliga metoden returnerar ett eller false booleskt true värde. Den kan användas från en befintlig klass, som du ser i nästa exempel. I följande exempel används Equals metoden för att avgöra om ett strängobjekt innehåller frasen "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"))

Det här exemplet visas True för konsolen.

Den här metoden kan också användas som en statisk metod. I följande exempel jämförs två strängobjekt med en statisk metod.

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

Det här exemplet visas True för konsolen.

StartsWith och EndsWith metoder

Du kan använda String.StartsWith metoden för att avgöra om ett strängobjekt börjar med samma tecken som omfattar en annan sträng. Den här skiftlägeskänsliga metoden returnerar true om det aktuella strängobjektet börjar med den angivna strängen och false om den inte gör det. I följande exempel används den här metoden för att avgöra om ett strängobjekt börjar med "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"))

Det här exemplet visas True för konsolen.

Metoden String.EndsWith jämför en godkänd sträng med de tecken som finns i slutet av det aktuella strängobjektet. Den returnerar också ett booleskt värde. I följande exempel kontrolleras slutet av en sträng med hjälp EndsWith av metoden .

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

Det här exemplet visas False för konsolen.

IndexOf och LastIndexOf metoder

Du kan använda String.IndexOf metoden för att fastställa positionen för den första förekomsten av ett visst tecken i en sträng. Den här skiftlägeskänsliga metoden börjar räkna från början av en sträng och returnerar positionen för ett godkänt tecken med hjälp av ett nollbaserat index. Om tecknet inte kan hittas returneras värdet -1.

I följande exempel används IndexOf metoden för att söka efter den första förekomsten av tecknet "l" i en sträng.

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

Det här exemplet visas 2 för konsolen.

Metoden String.LastIndexOf liknar String.IndexOf metoden förutom att den returnerar positionen för den sista förekomsten av ett visst tecken i en sträng. Den är skiftlägeskänslig och använder ett nollbaserat index.

I följande exempel används LastIndexOf metoden för att söka efter den sista förekomsten av tecknet il en sträng.

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

Det här exemplet visas 9 för konsolen.

Båda metoderna är användbara när de String.Remove används tillsammans med metoden. Du kan använda antingen IndexOf metoderna eller LastIndexOf för att hämta positionen för ett tecken och sedan ange positionen för Remove metoden för att ta bort ett tecken eller ett ord som börjar med det tecknet.

Se även