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.

Függvény neve Használd
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 szöveg az átadott szöveggel 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 szöveg 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 érzékeny. 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 Állapot
Negatív egész szám Az első sztring a rendezési sorrend második sztringje előtt található.

-vagy-

Az első karaktersorozat az null.
0 Az első és a második karakterlánc egyenlő.

-vagy-

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

-vagy-

1
Az első karakterlánc a második karakterláncot követi a rendezési sorrendben.

-vagy-

A második karakterlánc az null.

Fontos

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

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?"));
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 é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 kultúra paraméter megadásával. Egy példa, amely bemutatja, hogyan használható a String.Compare metódus kultúrafüggetlen összehasonlítások végrehajtására, az alábbiakban található: Kultúrafüggetlen sztringek összehasonlítása.

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 az String.CompareOrdinal módszert egyenlőség tesztelésére (azaz kizárólag egy 0-s visszatérési érték keresésére, függetlenül attól, hogy az egyik sztring kisebb vagy nagyobb, mint a másik). Ehelyett, annak meghatározásához, hogy két karaktersor egyenlő-e, használja a String.Equals(String, String, StringComparison) metódust.

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!"));
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 az String.CompareTo módszert egyenlőség tesztelésére (azaz kizárólag egy 0-s visszatérési érték keresésére, függetlenül attól, hogy az egyik sztring kisebb vagy nagyobb, mint a másik). Ehelyett, annak meghatározásához, hogy két karaktersor egyenlő-e, használja a String.Equals(String, String, StringComparison) metódust.

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 );
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 String.CompareTo metódus minden túlterhelése alapértelmezés szerint kultúra- és nagybetű-é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 a CultureInfo.CurrentCulture a kultúraérzékeny műveletekhez vagy a CultureInfo.InvariantCulture a kultúrafüggetlen műveletekhez. A String.Compare metódus használatával végrehajtható kultúraérzékeny és kultúrafüggetlen összehasonlítások példáiért lásd: Culture-Insensitive 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 "Hello World" kifejezést.

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));
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 különböztető módszer `true` értéket ad vissza, ha az aktuális sztringobjektum az átvett sztringgel kezdődik, és `false` értéket ad vissza, 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"));
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"));
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'));
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. Különbséget tesz a kis- és nagybetűk között, és nulláról induló indexelést 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'));
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 használhatja akár a IndexOf, akár a LastIndexOf metódusokat, majd ezt a pozíciót megadhatja a Remove metódusnak, hogy eltávolítson egy karaktert vagy egy olyan szót, amely ezzel a karakterrel kezdődik.

Lásd még