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
- Ajánlott eljárások sztringek használatához a .NET-ben
- Alapszintű sztringműveletek
- Kultúraérzékeny sztringműveletek végrehajtása
- Súlytáblák rendezése – a windowsos .NET-keretrendszer és a .NET Core 1.0-3.1 által használt
- Alapértelmezett Unicode rendezési elemtáblázat – a .NET 5 minden platformon, a .NET Core pedig Linuxon és macOS rendszeren