Exercise - Utilizarea metodelor de ajutor ale șirului IndexOf() și Subșir()
- 25 minute
În acest exercițiu, utilizați IndexOf() metoda pentru a găsi poziția unui șir de caractere sau a mai multor caractere într-un șir mai mare.
Substring() Utilizați metoda pentru a returna partea șirului mai mare care urmează pozițiile caracterelor specificate.
De asemenea, veți utiliza o versiune supraîncărcată a metodei Substring() pentru a seta lungimea caracterelor de returnat după o poziție specificată într-un șir.
Pregătirea mediului de codificare
Acest modul include activități practice care vă ghidează în procesul de creare și de rulare a codului demonstrativ. Sunteți încurajat să finalizați aceste activități utilizând Visual Studio Code ca mediu de dezvoltare. Utilizarea Codului Visual Studio pentru aceste activități vă ajută să vă obișnuiți să scrieți și să rulați cod într-un mediu de dezvoltator utilizat de profesioniști din întreaga lume.
Notă
Dacă ați finalizat alte module Microsoft Learn din această serie C#, este posibil să fi creat deja un folder de proiect pentru eșantioane de cod. Dacă acesta este cazul, puteți să omiteți următoarea secțiune de pași și să ștergeți codul din fișierul Project.cs utilizat pentru un exercițiu anterior.
Deschideți Visual Studio Code.
Puteți utiliza meniul Start Windows (sau resursa echivalentă pentru un alt sistem de operare) pentru a deschide Visual Studio Code.
În meniul Fișier Visual Studio Code, selectați Deschidere folder.
În caseta de dialog Deschidere folder, navigați la folderul Desktop Windows.
Dacă aveți o locație de folder diferită în care păstrați proiecte de cod, puteți utiliza acea locație de folder în schimb. Pentru această instruire, lucrul important este să aveți o locație ușor de găsit și de reținut.
În caseta de dialog Deschidere folder, selectați Selectare folder.
Dacă vedeți o casetă de dialog de securitate care vă întreabă dacă aveți încredere în autori, selectați Da.
În meniul Terminal Visual Studio Code, selectați Terminal nou .
Observați că o linie de comandă din panoul Terminal afișează calea folderului pentru folderul curent. De exemplu:
C:\Users\someuser\Desktop>În linia de comandă Terminal, pentru a crea o aplicație consolă nouă într-un folder specificat, tastați dotnet consolă nouă -o ./CsharpProjects/TestProject , apoi apăsați pe Enter.
Această comandă .NET CLI utilizează un șablon de program .NET pentru a crea un nou proiect de aplicație consolă C# în locația de folder specificată. Comanda creează folderele CsharpProjects și TestProject pentru dvs. și utilizează TestProject ca nume al fișierului
.csproj.În panoul EXPLORER, extindeți folderul CsharpProjects.
Ar trebui să vedeți folderul TestProject și două fișiere, un fișier program C# denumit Program.cs și un fișier proiect C# numit TestProject.csproj.
În panoul EXPLORER, pentru a vizualiza fișierul de cod în panoul Editor, selectați Program.cs.
Ștergeți liniile de cod existente.
Utilizați acest proiect de consolă C# pentru a crea, a construi și a rula eșantioane de cod în timpul acestui modul.
Închideți panoul Terminal.
Scrieți cod pentru a găsi perechile de paranteze încorporate într-un șir
Asigurați-vă că aveți visual Studio Code deschis și Program.cs afișat în panoul Editor.
Notă
Program.cs ar trebui să fie goală. Dacă nu este, selectați și ștergeți toate liniile de cod.
Tastați următorul cod în Visual Studio Code Editor:
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); Console.WriteLine(openingPosition); Console.WriteLine(closingPosition);În meniul Fișier Visual Studio Code, selectați Salvare.
Fișierul Program.cs trebuie salvat înainte de construirea sau rularea codului.
În panoul EXPLORER, pentru a deschide un Terminal la locația folderului TestProject, faceți clic dreapta pe TestProject, apoi selectați Deschidere în terminal integrat.
Un panou terminal ar trebui să se deschidă și ar trebui să includă o linie de comandă care arată că Terminal este deschis la locația folderului TestProject.
În linia de comandă Terminal, pentru a rula codul, tastați run dotnet apoi apăsați pe Enter.
Notă
Dacă vedeți un mesaj care spune "Nu s-a găsit un proiect de rulat", asigurați-vă că linia de comandă Terminal afișează locația așteptată a folderului TestProject. De exemplu:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Ar trebui să vedeți următoarea ieșire:
13 36În acest caz, indexul caracterului
(este 13. Rețineți că aceste valori sunt bazate pe zero, deci este al 14-lea caracter din șir. Indexul caracterului)este36.Acum că aveți cele două indexuri, le puteți utiliza ca limite pentru a regăsi valoarea dintre ele.
Adăugare cod pentru a regăsi valoarea dintre paranteze
Actualizați codul în Visual Studio Code Editor după cum urmează:
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));Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul. Ar trebui să vedeți următoarea ieșire:
(inside the parenthesesMetoda
Substring()are nevoie de poziția de început și de numărul de caractere sau de lungime pentru a fi regăsită. Așadar, calculați lungimea dintr-o variabilă temporară denumitălengthși o transmiteți cuopeningPositionvaloarea pentru a regăsi șirul dintre paranteze.Rezultatul este închis, însă rezultatul include parantezele deschise. În acest exercițiu, includerea parantezelor nu este dorită. Pentru a elimina parantezele din ieșire, trebuie să actualizați codul pentru a ignora indexul parantezelor propriu-zise.
Modificarea poziției de început a subrului
Actualizați codul în Visual Studio Code Editor după cum urmează:
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));Salvați fișierul de cod, apoi utilizați Visual Studio Code pentru a rula codul. Ar trebui să vedeți următoarea ieșire:
inside the parenthesesCitiți codul anterior și linia
openingPosition += 1;.Prin mărirea caracterului
openingPosition1parantezelor deschise, puteți trece peste caracterul parantezelor deschise.Motivul pentru care utilizați valoarea
1este faptul că aceasta este lungimea caracterului. Dacă încercați să găsiți o valoare care începe după un șir mai lung, de exemplu,<div>sau---, utilizați în schimb lungimea acelui șir.Actualizați codul în Visual Studio Code Editor după cum urmează:
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));Citiți codul anterior și linia
openingPosition += 6;.Fragmentul precedent de cod vă arată cum să găsiți valoarea într-o etichetă de deschidere și închidere
<span>.În acest caz, adăugați
6laopeningPositionacesta ca decalaj pentru a calcula lungimea subrrului.
Evitați valorile magice
Șirurile codificate ca "<span>" în listarea anterioară de cod sunt cunoscute ca "șiruri magice" și valori numerice codificate, cum ar fi 6 "numere magice". Aceste valori "Magic" sunt nedorite din multe motive și ar trebui să încercați să le evitați, dacă este posibil.
Revizuiți codul anterior pentru a lua în considerare modul în care se poate defecta codul dacă ați codat șirul
"<span>"de mai multe ori în cod, dar ați ortografiat greșit o instanță a acestuia ca"<sapn>".Compilatorul nu se prinde
"<sapn>"la momentul compilării, deoarece valoarea se află într-un șir. Ortografia greșită duce la probleme la momentul rulării și, în funcție de complexitatea codului dvs., poate fi dificil de urmărit.Mai mult, dacă modificați șirul
"<span>"la mai scurt"<div>", dar uitați să modificați numărul6la5, codul produce rezultate nedorite.Actualizați codul în Visual Studio Code Editor după cum urmează:
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));Examinați codul actualizat și utilizarea cuvântului cheie
constașa cum se utilizează înconst string openSpan = "<span>";.Codul utilizează o constantă cu
constcuvântul cheie. O constantă vă permite să definiți și să inițializați o variabilă a cărei valoare nu poate fi modificată niciodată. Apoi utilizați constanta respectivă în restul codului ori de câte ori aveți nevoie de acea valoare. Acest lucru asigură faptul că valoarea este definită o singură dată și ortografiarea greșită a variabileiconsteste prinsă de compilator.Listarea codului anterior este o modalitate mai sigură de a scrie același cod pe care l-ați examinat în secțiunea anterioară. Acum, dacă valoarea
openSpanmodificărilor la<div>, linia de cod care utilizeazăLengthproprietatea continuă să fie validă.
Recapitulare
Această unitate a acoperit mult material. Iată cele mai importante lucruri de reținut:
-
IndexOf()vă oferă prima poziție a unui caracter sau șir în interiorul altui șir. -
IndexOf()returnează-1dacă nu găsește o potrivire. -
Substring()returnează doar porțiunea specificată a unui șir, utilizând o poziție de început și o lungime opțională. - De multe ori, există mai multe modalități de a rezolva o problemă. Ați utilizat două tehnici separate pentru a găsi toate instanțele unui anumit caracter sau șir.
- Evitați valorile magice codificate. În schimb, definiți o
constvariabilă. Valoarea unei variabile constante nu poate fi modificată după inițializare.
Verificați-vă cunoștințele
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?