Megosztás a következőn keresztül:


Sztringek összehasonlítása a .NET-ben

A .NET számos módszert kínál a sztringek értékeinek összehasonlítására. Az alábbi táblázat felsorolja és ismerteti az érték-összehasonlító módszereket.

Metódus neve Használat
String.Compare Két sztring értékeit hasonlítja össze. Egész számot ad vissza.
String.CompareOrdinal Két sztringet hasonlít össze a helyi kultúrától függetlenül. Egész számot ad vissza.
String.CompareTo Összehasonlítja az aktuális sztringobjektumot egy másik sztringgel. Egész számot ad vissza.
String.StartsWith Meghatározza, hogy egy sztring az átadott sztringgel kezdődik-e. Logikai értéket ad vissza.
String.EndsWith Meghatározza, hogy egy sztring az átadott sztringgel végződik-e. Logikai értéket ad vissza.
String.Contains Meghatározza, hogy egy karakter vagy sztring egy másik sztringben fordul-e elő. Logikai értéket ad vissza.
String.Equals Meghatározza, hogy két sztring azonos-e. Logikai értéket ad vissza.
String.IndexOf Egy karakter vagy sztring indexpozícióját adja vissza a vizsgált sztring elejétől kezdve. Egész számot ad vissza.
String.LastIndexOf Egy karakter vagy sztring indexpozícióját adja vissza a vizsgált sztring végétől kezdve. Egész számot ad vissza.

Compare Módszer

A statikus String.Compare módszer alapos módszert biztosít két sztring összehasonlítására. Ez a módszer kulturálisan tisztában van. Ez a függvény két sztring vagy két sztring részsztringjének összehasonlítására használható. Emellett túlterhelést is biztosítanak, amelyek figyelembe veszik vagy figyelmen kívül hagyják az esetet és a kulturális eltérést. Az alábbi táblázat azt a három egész számot mutatja be, amelyeket ez a metódus visszaadhat.

Visszaadott érték Feltétel
Negatív egész szám Az első sztring a rendezési sorrend második sztringje előtt található.

-vagy-

Az első sztring az null.
0 Az első és a második sztring egyenlő.

-vagy-

Mindkét sztring .null
Pozitív egész szám

-vagy-

0
Az első sztring a rendezési sorrend második sztringét követi.

-vagy-

A második sztring az null.

Fontos

A String.Compare metódus elsősorban sztringek rendeléséhez vagy rendezéséhez használható. Ne használja a módszert az String.Compare egyenlőség tesztelésére (azaz a 0-s visszatérési érték explicit keresésére, nem számítva, hogy az egyik sztring kisebb vagy nagyobb-e, mint a másik). Ehelyett annak meghatározásához, hogy két sztring egyenlő-e, használja a metódust String.Equals(String, String, StringComparison) .

Az alábbi példa két sztring relatív értékeinek meghatározására használja a String.Compare metódust.

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

Ez a példa a konzolon jelenik meg -1 .

Az előző példa alapértelmezés szerint kulturális szempontból érzékeny. A kultúra szempontjából nem érzéketlen sztringek összehasonlításához használja a String.Compare metódus túlterhelését, amely lehetővé teszi a használni kívánt kultúra megadását egy kulturális paraméter megadásával. Egy példa, amely bemutatja, hogyan használható a metódus a String.Compare kultúra érzéketlen összehasonlítására, tekintse meg a Kultúra érzéketlen sztringek összehasonlítását.

CompareOrdinal Módszer

A String.CompareOrdinal metódus két sztringobjektumot hasonlít össze a helyi kultúra figyelembe vétele nélkül. A metódus visszatérési értékei megegyeznek az előző táblázatban szereplő metódus által Compare visszaadott értékekkel.

Fontos

A String.CompareOrdinal metódus elsősorban sztringek rendeléséhez vagy rendezéséhez használható. Ne használja a módszert az String.CompareOrdinal egyenlőség tesztelésére (azaz a 0-s visszatérési érték explicit keresésére, nem számítva, hogy az egyik sztring kisebb vagy nagyobb-e, mint a másik). Ehelyett annak meghatározásához, hogy két sztring egyenlő-e, használja a metódust String.Equals(String, String, StringComparison) .

Az alábbi példa két CompareOrdinal sztring értékeinek összehasonlítására használja a metódust.

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

Ez a példa a konzolon jelenik meg -32 .

CompareTo Módszer

A String.CompareTo metódus összehasonlítja azt a sztringet, amelyet az aktuális sztringobjektum beágyaz egy másik sztringhez vagy objektumhoz. A metódus visszatérési értékei megegyeznek az előző táblázatban szereplő metódus által String.Compare visszaadott értékekkel.

Fontos

A String.CompareTo metódus elsősorban sztringek rendeléséhez vagy rendezéséhez használható. Ne használja a módszert az String.CompareTo egyenlőség tesztelésére (azaz a 0-s visszatérési érték explicit keresésére, nem számítva, hogy az egyik sztring kisebb vagy nagyobb-e, mint a másik). Ehelyett annak meghatározásához, hogy két sztring egyenlő-e, használja a metódust String.Equals(String, String, StringComparison) .

Az alábbi példa a String.CompareTo metódus használatával hasonlítja össze az string1 objektumot az string2 objektummal.

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)

Ez a példa a konzolon jelenik meg -1 .

A metódus minden túlterhelése String.CompareTo alapértelmezés szerint kultúra- és kis- és nagybetűkre érzékeny összehasonlításokat végez. Ennek a módszernek nincs túlterhelése, amely lehetővé teszi a kultúra érzéketlen összehasonlítását. A kód érthetősége érdekében azt javasoljuk, hogy inkább a String.Compare metódust használja, és adja meg CultureInfo.CurrentCulture a kultúraérzékeny műveletekhez vagy CultureInfo.InvariantCulture a kultúraérzékeny műveletekhez. A kultúraérzékeny és a String.Compare kultúraérzékeny összehasonlítások elvégzésére használható módszert bemutató példákért lásd : Kultúraérzékeny sztring-összehasonlítások végrehajtása.

Equals Módszer

A String.Equals metódus könnyen megállapíthatja, hogy két sztring azonos-e. Ez a kis- és nagybetűket megkülönböztető metódus egy true vagy false logikai értéket ad vissza. Egy meglévő osztályból is használható, ahogy a következő példában is látható. Az alábbi példa a Equals metódus használatával határozza meg, hogy egy sztringobjektum tartalmazza-e a ""Helló világ!" alkalmazás" kifejezést.

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

Ez a példa a konzolon jelenik meg True .

Ez a módszer statikus módszerként is használható. Az alábbi példa két sztringobjektumot hasonlít össze statikus módszerrel.

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

Ez a példa a konzolon jelenik meg True .

StartsWith és EndsWith metódusok

Ezzel a String.StartsWith módszerrel megállapíthatja, hogy egy sztringobjektum ugyanazokkal a karakterekkel kezdődik-e, amelyek egy másik sztringet is magukban foglalnak. Ez a kis- és nagybetűket true megkülönböztető metódus akkor ad vissza, ha az aktuális sztringobjektum az átadott sztringgel kezdődik, és false ha nem. Az alábbi példa ezzel a módszerrel állapítja meg, hogy egy sztringobjektum a "Hello" karakterrel kezdődik-e.

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

Ez a példa a konzolon jelenik meg True .

A String.EndsWith metódus összehasonlít egy átadott sztringet az aktuális sztringobjektum végén található karakterekkel. Logikai értéket is ad vissza. Az alábbi példa egy sztring végét ellenőrzi a EndsWith metódus használatával.

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

Ez a példa a konzolon jelenik meg False .

IndexOf és LastIndexOf metódusok

A metódussal String.IndexOf meghatározhatja egy adott karakter első előfordulásának helyét egy sztringen belül. Ez a kis- és nagybetűket megkülönböztető metódus egy sztring elejéről kezd számlálni, és nulla alapú index használatával visszaadja egy átadott karakter pozícióját. Ha a karakter nem található, a rendszer egy –1 értéket ad vissza.

Az alábbi példa a metódust használja a IndexOf "l" karakter első előfordulásának keresésére egy sztringben.

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

Ez a példa a konzolon jelenik meg 2 .

A String.LastIndexOf metódus hasonló a String.IndexOf metódushoz, azzal a kivételével, hogy egy adott karakter utolsó előfordulásának helyét adja vissza egy sztringen belül. A kis- és nagybetűk megkülönböztetése nulla alapú indexet használ.

Az alábbi példa a metódust használja a LastIndexOf sztringben található "l" karakter utolsó előfordulásának keresésére.

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

Ez a példa a konzolon jelenik meg 9 .

Mindkét módszer akkor hasznos, ha a String.Remove metódussal együtt használják. A karakter pozíciójának lekéréséhez vagy LastIndexOf a metódusok használatával IndexOf lekérheti a karakter pozícióját, majd a metódusnak adja meg ezt a Remove pozíciót, hogy eltávolítson egy karaktert vagy egy olyan szót, amely ezzel a karakterrel kezdődik.

Lásd még