Metoda subșirului VB.NET cu EXEMPLU
⚡ Rezumat inteligent
VB.Net Substring extracReturnează o porțiune dintr-un String specificând un index inițial și o lungime opțională. Metoda aparține clasei String, numără caracterele de la zero și returnează un String complet nou fără a modifica originalul.
Ce este un subșir?
Funcția Substring este utilizată pentru a obține o parte a unui șir specificat. Această metodă este definită în clasa String a Microsoft VB.NetTrebuie să specificați indexul de început de la care va fi exprimat șirul.tracted. Șirul va fi extracted de la acel index până la lungimea specificată de dvs.
Înainte de fostul/fostatracÎn procesul de sintaxă, este ajută la înțelegerea sintaxei așteptate de metoda Substring.
Sintaxa subșirului
Funcția acceptă două argumente așa cum se arată în următoarea sintaxă:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
Aici,
- Cuvântul cheie ByVal denotă pass-by-value, care este un mecanism de transmitere a argumentelor către funcții.
- start_Index este indexul din care va fi obținut subșirul.
- sub_length denotă lungimea până la care va fi copiat șirul de caractere din start_Index. Această lungime este măsurată în funcție de numărul de caractere. Funcția va returna extracsubșir ted.
Indexul inițial are bază zero, deci primul caracter al șirului se află la poziția 0 în loc de poziția 1.
Cu sintaxa definită, următoarele exemple prezintă metoda Substring la lucru în cadrul unei aplicații consolă.
Exemple
Pasul 1) Creați o nouă aplicație de consolă.
Pasul 2) Adăugați următorul cod:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(0, 4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
Pasul 3) Faceți clic pe butonul Start din bara de instrumente pentru a executa codul. Ar trebui să obțineți următorul rezultat:
Am folosit următorul cod:
Explicația de Code:
- Crearea unui modul numit Module1.
- Pornirea sub-procedurii principale.
- Definirea unei variabile de tip șir de caractere numită st și atribuirea valorii acesteia Guru99 la acesta.
- Definirea unei variabile de tip șir de caractere numită „subst” ca subșir al șirului „st” de la indexul 0 și cu o lungime de 4 caractere.
- Imprimarea unui text și a subșirului de mai sus pe consolă.
- Întrerupeți fereastra consolei pentru un timp, așteptând ca utilizatorul să ia măsuri pentru a o închide.
- Sfârșitul subprocedurii principale.
- Sfârșitul modulului.
Un singur argument
Ce se întâmplă dacă trecem un singur argument funcției? Funcția va copia toate datele din șirul care începe de la acel index. Ceea ce se întâmplă este că funcția Substring copie în mod intern toate datele șir de la acel index, precum și cele care urmează acelui index. De exemplu:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(4) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
Faceți clic pe butonul Start pentru a rula codul. Ar trebui să returneze următoarele:
Funcția Substring a returnat 99. Am transmis parametrul 4 funcției, ceea ce înseamnă că va începe să exprimetract subșirul de la caracterul de la indexul 4 până la sfârșitul șirului. 9 este caracterul de la indexul 4 al șirului. Guru99, de unde și fostultracțiunea a început acolo.
Pe lângă eliminarea dintr-un singur index, metoda Substring poate viza și caracterele din mijlocul unui String.
Personaje din mijloc
De asemenea, este posibil să obținem caracterele din mijloc ale șirului în cauză. În acest caz, trebuie să furnizăm doar indicele de pornire și lungimea șirului de care avem nevoie. În exemplul următor, obținem un subșir al șirului specificat de la indexul 2 și șirul va avea o lungime de 2 caractere:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim subst As String = st.Substring(2, 2) Console.WriteLine("The substring is: {0}", subst) Console.ReadKey() End Sub End Module
Faceți clic pe butonul Start din bara de instrumente pentru a rula codul. Veți obține următorul rezultat:
În exemplul de mai sus, funcția Substring a returnat ru. Am transmis parametrii (2, 2) funcției. Primii 2 instruiesc funcția să înceapă extracțiune a subșirului de la indexul 2, în timp ce al doilea 2 instruiește funcția să returneze un subșir cu o lungime de doar 2 caractere. Aceasta înseamnă că extracțiunea subșirului ar trebui să înceapă de la elementul situat la indexul 2 al șirului Guru99, care este r. Deoarece subșirul returnat ar trebui să aibă o lungime de doar 2 caractere, extracțiunea nu va trece de „u”, prin urmare a returnat „ru”.
Un Char
Putem folosi funcția Substring pentru a obține un singur caracter dintr-un șir. Într-un astfel de caz, este o necesitate pentru tine să faci o alocare, dar personajul poate fi accesat direct. Acesta este un pic mai rapid. Următorul exemplu demonstrează două moduri prin care putem realiza acest lucru:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim mid1 As Char = st(1) Console.WriteLine(mid1) Dim mid2 As String = st.Substring(1, 1) Console.WriteLine(mid2) Console.ReadKey() End Sub End Module
Faceți clic pe butonul Start pentru a rula codul. Veți obține următorul rezultat:
Am folosit următorul cod:
Explicația de Code:
- Crearea unui modul numit Module1.
- Pornirea sub-procedurii principale.
- Definirea unei variabile de tip șir de caractere numită st și atribuirea valorii acesteia Guru99 la acesta.
- Definirea unei variabile șir numită mid1 și obținerea caracterului de la indexul 1 al String st. Acest caracter va fi atribuit variabilei mid1.
- Tipărirea caracterului de mai sus pe consolă.
- Definirea unei variabile șir numită mid2 și obținerea caracterului la indexul 1 cu o lungime de 1 din String st. Lungimea lui 1 înseamnă că va returna același caracter la indexul de pornire. Numărarea începe de la indexul de pornire pe care îl specificați. Acest caracter va fi atribuit variabilei mid2.
- Tipărirea caracterului de mai sus pe consolă.
- Întrerupeți fereastra consolei pentru un timp, așteptând ca utilizatorul să ia măsuri pentru a o închide.
- Sfârșitul subprocedurii principale.
- Sfârșitul modulului.
Odată ce te simți confortabil, fostul/fostatracCând se utilizează subșiruri, merită să știți cum să gestionați erorile pe care metoda le poate genera.
Erori comune ale subșirurilor și cum să le evitați
Metoda Substring este strictă în ceea ce privește valorile pe care i le transmiteți. Când un argument se află în afara limitelor String-ului, VB.Net generează o excepție ArgumentOutOfRangeException și oprește programul în timpul execuției. Înțelegerea regulilor vă ajută să evitați această greșeală frecventă.
Metoda ridică excepția în trei situații:
- Indexul_inițial este un număr negativ.
- Indexul_inițial este mai mare decât lungimea șirului de caractere.
- Suma dintre start_Index și sub_length indică dincolo de sfârșitul șirului de caractere.
O greșeală frecventă este utilizarea rezultatului funcției IndexOf fără a-l verifica mai întâi. Când IndexOf nu găsește caracterul, acesta returnează -1, iar transmiterea valorii -1 către Substring declanșează excepția. Următorul cod protejează împotriva acestui lucru:
Module Module1 Sub Main() Dim st As String = "Guru99" Dim pos As Integer = st.IndexOf("9") If pos >= 0 Then Dim subst As String = st.Substring(pos) Console.WriteLine(subst) Else Console.WriteLine("Character not found") End If Console.ReadKey() End Sub End Module
Validarea indexului înainte de apel menține aplicația funcționând fără probleme, chiar și atunci când șirul de intrare nu conține caracterul așteptat.
Obținerea unui subșir înainte sau după un caracter
O sarcină comună este extracdivizarea textului care apare înainte sau după un anumit caracter, cum ar fi divizarea unei adrese de e-mail la semnul @. VB.Net nu oferă o funcție dedicată pentru acest lucru, dar puteți combina IndexOf cu Substring pentru a realiza acest lucru.
Text înaintea unui caracter: Apelați IndexOf pentru a localiza caracterul, apoi transmiteți acel index ca lungime către Substring:
Module Module1 Sub Main() Dim email As String = "guru99@example.com" Dim position As Integer = email.IndexOf("@") Dim namePart As String = email.Substring(0, position) Console.WriteLine(namePart) Console.ReadKey() End Sub End Module
Codul afișează guru99, porțiunea din șir care se află înaintea semnului @.
Text după un caracter: adăugați 1 la index și lăsați Substring să ruleze până la sfârșitul String-ului:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
Aceasta returnează example.com. Când un caracter apare de mai multe ori, se folosește LastIndexOf în locul IndexOf pentru a începe de la ultima apariție în loc de prima.
Subșir vs. funcții stânga, dreapta și mijlocie
Visual Basic moștenește trei funcții de șir vechi din versiunile anterioare: Left, Right și Mid. Acestea se află în MicrosoftSpațiul de nume .VisualBasic și poate părea mai familiar dezvoltatorilor care vin din VB clasic.
- Stânga(șir, n) returnează primele n caractere ale unui șir de caractere.
- Dreapta(șir, n) returnează ultimele n caractere ale unui șir de caractere.
- Mijloc(șir, început, lungime) returnează o porțiune dintr-o poziție inițială, la fel ca Substring.
Diferența cheie constă în modul în care numără pozițiile. Funcția Mid are bază unu, deci primul caracter se află la poziția 1, în timp ce metoda Substring are bază zero și începe numărarea de la 0. Substring este abordarea standard .NET și se comportă la fel în fiecare limbaj .NET, deci este alegerea recomandată pentru codul nou. Rezervați Left, Right și Mid pentru întreținerea proiectelor Visual Basic mai vechi.






