Gyakorlat – A sztring IndexOf() és Substring() segédmetódusainak használata
- 25 perc
Ebben a gyakorlatban a IndexOf() metódussal megkeresheti egy vagy több karakterből álló sztring pozícióját egy nagyobb sztringben. A metódus használatával Substring() visszaadhatja a nagyobb sztring azon részét, amely a megadott karakterpozíciókat követi.
A metódus túlterhelt verzióját is használhatja a Substring() karakterlánc megadott pozíciója után visszaadandó karakterek hosszának beállításához.
A kódolási környezet előkészítése
Ez a modul gyakorlati tevékenységeket tartalmaz, amelyek végigvezetik a bemutatókód létrehozásának és futtatásának folyamatán. Javasoljuk, hogy fejlesztési környezetként a Visual Studio Code használatával végezze el ezeket a tevékenységeket. Ha a Visual Studio Code-ot használja ezekhez a tevékenységekhez, azzal kényelmesen írhat és futtathat kódot egy olyan fejlesztői környezetben, amelyet világszerte használnak a szakemberek.
Megjegyzés:
Ha ebben a C#-sorozatban más Microsoft Learn-modulokat is elvégzett, előfordulhat, hogy már létrehozott egy projektmappát a kódmintákhoz. Ha ez a helyzet, kihagyhatja a lépések következő szakaszát, és törölheti az Project.cs előző gyakorlathoz használt fájlban lévő kódot.
Nyissa meg a Visual Studio Code-ot.
A Visual Studio Code megnyitásához használhatja a Windows Start menüjét (vagy egy másik operációs rendszer egyenértékű erőforrását).
A Visual Studio Code File menüben válassza a Mappa megnyitása lehetőséget.
A Mappa megnyitása párbeszédpanelen lépjen a Windows Desktop mappába.
Ha más mappahelyen tartja a kódprojekteket, használhatja inkább ezt a mappahelyet. Ebben a képzésben az a fontos, hogy legyen egy könnyen megtalálható és megjegyezhető hely.
A Mappa megnyitása párbeszédpanelen válassza a Mappa kiválasztása lehetőséget.
Ha megjelenik egy biztonsági párbeszédpanel, amely megkérdezi, hogy megbízik-e a szerzőkben, válassza az Igen lehetőséget.
A Visual Studio Code Terminál menüjében válassza az Új terminál lehetőséget.
Figyelje meg, hogy a Terminál panelen egy parancssor megjeleníti az aktuális mappa elérési útját. Például:
C:\Users\someuser\Desktop>A Terminál parancssorában egy új konzolalkalmazás adott mappában való létrehozásához írja be a dotnet új konzol -o ./CsharpProjects/TestProject parancsot , majd nyomja le az Enter billentyűt.
Ez a .NET CLI-parancs .NET-programsablon használatával hoz létre egy új C#-konzolalkalmazás-projektet a megadott mappahelyen. A parancs létrehozza Önnek a CsharpProjects és a TestProject mappákat, és a
.csprojFájl neveként a TestProjectet használja.Az EXPLORER panelen bontsa ki a CsharpProjects mappát.
Ekkor megjelenik a TestProject mappa és két fájl, egy Program.cs nevű C# programfájl és egy TestProject.csproj nevű C# projektfájl.
Az EXPLORER panelen válassza a Program.cs lehetőséget, ha meg szeretné tekinteni a kódfájlt a Szerkesztő panelen.
Törölje a meglévő kódsorokat.
A modul során ezzel a C# konzolprojekttel kódmintákat hoz létre, épít és futtat.
Zárja be a Terminál panelt.
Kód írása sztringbe ágyazott zárójelpárok kereséséhez
Győződjön meg arról, hogy meg van nyitva a Visual Studio Code, és a Program.cs látható a szerkesztő panelen.
Megjegyzés:
Program.cs üresnek kell lennie. Ha nincs így, jelölje ki és törölje az összes kódsort.
Írja be a következő kódot a Visual Studio Code Editorba:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); Console.WriteLine(openingPosition); Console.WriteLine(closingPosition);A Visual Studio Code File menüben válassza a Mentés lehetőséget.
A Program.cs fájlt a kód létrehozása vagy futtatása előtt menteni kell.
Az EXPLORER panelen nyissa meg a Terminált a TestProject mappa helyén, kattintson a jobb gombbal a TestProject elemre, majd válassza a Megnyitás az integrált terminálban lehetőséget.
Meg kell nyílnia egy terminálpanelnak, amely tartalmaz egy parancssort, jelezve, hogy a terminál a TestProject mappa helyére van állítva.
A terminál parancssorában a kód futtatásához írja be a dotnet run parancsot , majd nyomja le az Enter billentyűt.
Megjegyzés:
Ha "Nem található futtatandó projekt" üzenet jelenik meg, győződjön meg arról, hogy a Terminál parancssora megjeleníti a TestProject mappa várt helyét. Például:
C:\Users\someuser\Desktop\csharpprojects\TestProject>A következő kimenetnek kell megjelennie:
13 36Ebben az esetben a karakter indexe
(13. Ne feledje, hogy ezek az értékek nulla alapúak, ezért ez a karakterlánc 14. karaktere. A karakter indexe).36Most, hogy már rendelkezik a két indexszel, használhatja őket határokként a közöttük lévő érték lekéréséhez.
Kód hozzáadása az érték zárójelek közötti lekéréséhez
Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); // Console.WriteLine(openingPosition); // Console.WriteLine(closingPosition); int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot. A következő kimenetnek kell megjelennie:
(inside the parenthesesA
Substring()metódusnak szüksége van a kezdő pozícióra és a karakterek számára vagy hosszára a lekéréshez. Így kiszámítja a hosszt egy ideiglenes változóban, amelyet alengthzárójelben lévő sztring lekéréséhez ad át az értéknekopeningPosition.Az eredmény közel van, de a kimenet tartalmazza a nyitó zárójelet. Ebben a gyakorlatban a zárójel felvétele nem kívánatos. Ha el szeretné távolítani a zárójelet a kimenetből, frissítenie kell a kódot, hogy kihagyja magának a zárójelnek az indexét.
Az alsztring kezdőpozíciójának módosítása
Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); openingPosition += 1; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Mentse a kódfájlt, majd a Visual Studio Code használatával futtassa a kódot. A következő kimenetnek kell megjelennie:
inside the parenthesesSzánjon egy kis időt az előző kód és a sor
openingPosition += 1;áttekintésére.A by növelésével
openingPosition1átugorhatja a nyitó zárójel karaktert.Azért használja az értéket
1, mert ez a karakter hossza. Ha egy hosszabb sztring után kezdődő értéket próbál megkeresni, például<div>---a karakterlánc hosszát használja.Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
string message = "What is the value <span>between the tags</span>?"; int openingPosition = message.IndexOf("<span>"); int closingPosition = message.IndexOf("</span>"); openingPosition += 6; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Szánjon egy kis időt az előző kód és a sor
openingPosition += 6;áttekintésére.A kód előző kódrészlete bemutatja, hogyan keresheti meg az értéket egy nyitó és záró
<span>címkén belül.Ebben az esetben az
6alsztring hosszának kiszámításához eltolásként hozzáadjaopeningPositionaz eltolást.
A varázsértékek elkerülése
A kemény kódú sztringeket, mint "<span>" az előző kódlistában, "mágikus sztringeknek" nevezzük, és a rögzített numerikus értékeket, például 6 a "varázsszámokat" is. Ezek a "Magic" értékek számos okból nem kívánatosak, és ha lehetséges, próbálja meg elkerülni őket.
Tekintse át az előző kódot, és gondolja át, hogyan törhet meg a kód, ha többször is rögzítette a sztringet
"<span>"a kódban, de hibásan írt egy"<sapn>"példányt.A fordító nem kapja meg
"<sapn>"a fordítási időpontot, mert az érték egy sztringben van. A hibás elírás futásidőben problémákhoz vezet, és a kód összetettségétől függően nehéz lehet nyomon követni.Továbbá, ha a sztringet
"<span>"rövidebbre"<div>"módosítja, de a számot65elfelejti módosítani, akkor a kód nemkívánatos eredményeket eredményez.Frissítse a kódot a Visual Studio Code Editorban az alábbiak szerint:
string message = "What is the value <span>between the tags</span>?"; const string openSpan = "<span>"; const string closeSpan = "</span>"; int openingPosition = message.IndexOf(openSpan); int closingPosition = message.IndexOf(closeSpan); openingPosition += openSpan.Length; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Szánjon egy percet a frissített kód és a kulcsszó
consthasználatbavételének vizsgálatáraconst string openSpan = "<span>";.A kód egy állandót használ a
constkulcsszóval. Az állandóval definiálhat és inicializálhat olyan változót, amelynek értéke soha nem módosítható. Ezt az állandót a kód többi részében fogja használni, amikor szüksége van erre az értékre. Ez biztosítja, hogy az érték csak egyszer legyen definiálva, és a fordító elgépeli aconstváltozót.Az előző kódlista biztonságosabb módja annak, hogy ugyanazt a kódot írja, amelyet az előző szakaszban vizsgált. Most, ha a változás
openSpanértéke<div>, a tulajdonságot használóLengthkódsor továbbra is érvényes marad.
Összefoglalás
Ez az egység sok anyagot lefedett. Íme a legfontosabb tudnivalók:
-
IndexOf()egy karakter vagy sztring első pozícióját adja meg egy másik sztringben. -
IndexOf()visszaadja-1, ha nem talál egyezést. -
Substring()A sztringnek csak a megadott részét adja vissza egy kezdőpozíció és az opcionális hossz használatával. - A probléma megoldásának gyakran több módja is van. Két különböző technikát használt egy adott karakter vagy sztring összes példányának megkereséséhez.
- Kerülje a kódolt mágikus értékeket. Ehelyett definiáljon egy változót
const. Az állandó változó értéke az inicializálás után nem módosítható.
Tesztelje tudását
Visszajelzés
Hasznosnak találta ezt az oldalt?
No
Segítségre van szüksége ezzel a témakörrel kapcsolatban?
Szeretné kipróbálni az Ask Learn használatát a témakör tisztázásához vagy áttekintéséhez?