VB.NET-delstrengmetode med EKSEMPEL
โก Smart oppsummering
VB.Net-delstreng f.eks.tracTeller en del av en streng ved รฅ spesifisere en startindeks og en valgfri lengde. Metoden tilhรธrer String-klassen, teller tegn fra null og returnerer en helt ny streng uten รฅ endre originalen.
Hva er en delstreng?
Delstrengfunksjonen brukes til รฅ hente en del av en spesifisert streng. Denne metoden er definert i String-klassen til Microsoft VB.NetDu mรฅ spesifisere startindeksen som strengen skal eks. fra.tracted. Strengen vil vรฆre eks.tracfra den indeksen opp til lengden du angir.
Fรธr ekstractekst, hjelper det รฅ forstรฅ syntaksen som Substring-metoden forventer.
Syntaks for understreng
Funksjonen godtar to argumenter som vist i fรธlgende syntaks:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
Her
- ByVal-nรธkkelordet angir pass-by-value, som er en mekanisme for รฅ sende argumenter til funksjoner.
- start_Index er indeksen som delstrengen skal hentes fra.
- sub_length angir lengden strengen kopieres opp til fra start_Index. Denne lengden mรฅles i antall tegn. Funksjonen returnerer eks.tracted delstreng.
Startindeksen er nullbasert, sรฅ det fรธrste tegnet i strengen sitter i posisjon 0 i stedet for posisjon 1.
Med syntaksen definert, viser fรธlgende eksempler Substring-metoden i arbeid i en konsollapplikasjon.
Eksempler
Trinn 1) Opprett en ny konsollapplikasjon.
Trinn 2) Legg til fรธlgende kode:
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
Trinn 3) Klikk pรฅ Start-knappen fra verktรธylinjen for รฅ kjรธre koden. Du bรธr fรฅ fรธlgende resultat:
Vi har brukt fรธlgende kode:
Forklaring til Code:
- Opprette en modul kalt Module1.
- Starter hovedunderprosedyren.
- Definere en strengvariabel med navnet st og tilordne verdien Guru99 til det.
- Definere en strengvariabel kalt 'subst' som en delstreng av strengen 'st' fra indeks 0 og en lengde pรฅ 4 tegn.
- Skriver ut litt tekst og understrengen ovenfor pรฅ konsollen.
- Setter konsollvinduet pรฅ pause en stund mens du venter pรฅ at brukeren skal gjรธre noe for รฅ lukke det.
- Slutt pรฅ hoveddelprosedyren.
- Slutt pรฅ modulen.
Ett argument
Hva om vi sender bare ett argument til funksjonen? Funksjonen vil kopiere alle dataene i strengen som starter fra den indeksen. Det som skjer er at Substring-funksjonen internt kopierer alle strengdataene pรฅ den indeksen sรฅ vel som den som fรธlger den indeksen. For eksempel:
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
Klikk pรฅ Start-knappen for รฅ kjรธre koden. Den skal returnere fรธlgende:
Delstrengfunksjonen returnerte 99. Vi sendte parameter 4 til funksjonen, noe som betyr at den vil begynne รฅ eks.tract delstrengen fra tegnet ved indeks 4 til slutten av strengen. 9 er tegnet ved indeks 4 i strengen Guru99, derav eksentracsjonen startet der.
I tillegg til รฅ trimme fra en enkelt indeks, kan Substring-metoden ogsรฅ mรฅlrette tegn midt i en streng.
Mellomste tegn
Det er ogsรฅ mulig for oss รฅ fรฅ de midterste tegnene til den aktuelle strengen. I dette tilfellet trenger vi bare รฅ oppgi startindeksen og lengden pรฅ strengen vi trenger. I fรธlgende eksempel fรฅr vi en understreng av den angitte strengen fra indeks 2, og strengen vil ha en lengde pรฅ 2 tegn:
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
Klikk pรฅ Start-knappen fra verktรธylinjen for รฅ kjรธre koden. Du vil fรฅ fรธlgende resultat:
I eksemplet ovenfor returnerte delstrengfunksjonen ru. Vi sendte parameterne (2, 2) til funksjonen. De fรธrste 2 instruerer funksjonen til รฅ starte eks.tracsjon av delstrengen fra indeks 2, mens den andre 2 instruerer funksjonen til รฅ returnere en delstreng med en lengde pรฅ kun 2 tegn. Dette betyr at eks.tracDelstrengen skal starte fra elementet som ligger i indeks 2 av strengen. Guru99, som er r. Siden den returnerte delstrengen bare skal ha en lengde pรฅ 2 tegn, er f.eks.trac`tion` vil ikke gรฅ forbi `u`, derfor returnerte den `ru`.
En rรธye
Vi kan bruke Substring-funksjonen for รฅ fรฅ et enkelt tegn fra en streng. I et slikt tilfelle er det en nรธdvendighet for deg รฅ gjรธre en tildeling, men karakteren kan nรฅs direkte. Dette er litt raskere. Fรธlgende eksempel viser to mรฅter vi kan oppnรฅ dette pรฅ:
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
Klikk pรฅ Start-knappen for รฅ kjรธre koden. Du vil fรฅ fรธlgende resultat:
Vi har brukt fรธlgende kode:
Forklaring til Code:
- Opprette en modul kalt Module1.
- Starter hovedunderprosedyren.
- Definere en strengvariabel med navnet st og tilordne verdien Guru99 til det.
- Definere en strengvariabel kalt mid1 og fรฅ tegnet ved indeks 1 av String st. Dette tegnet vil bli tildelt variabelen mid1.
- Skriver ut tegnet ovenfor pรฅ konsollen.
- Definere en strengvariabel kalt mid2 og fรฅ tegnet ved indeks 1 med lengden 1 fra String st. Lengden pรฅ 1 betyr at den vil returnere det samme tegnet ved startindeksen. Tellingen starter fra startindeksen du angir. Dette tegnet vil bli tildelt variabelen mid2.
- Skriver ut tegnet ovenfor pรฅ konsollen.
- Setter konsollvinduet pรฅ pause en stund mens du venter pรฅ at brukeren skal gjรธre noe for รฅ lukke det.
- Slutt pรฅ hoveddelprosedyren.
- Slutt pรฅ modulen.
Nรฅr du er komfortabel med eksentracNรฅr man bruker delstrenger, er det verdt รฅ vite hvordan man hรฅndterer feilene metoden kan forรฅrsake.
Vanlige delstrengfeil og hvordan du unngรฅr dem
Substring-metoden er streng nรฅr det gjelder verdiene du sender til den. Nรฅr et argument faller utenfor strengens grenser, kaster VB.Net en ArgumentOutOfRangeException og stopper programmet ved kjรธretid. ร forstรฅ reglene hjelper deg med รฅ unngรฅ denne vanlige feilen.
Metoden gir unntak i tre situasjoner:
- start_indeksen er et negativt tall.
- start_Index er stรธrre enn lengden pรฅ strengen.
- Summen av start_Index og sub_length peker forbi slutten av strengen.
En vanlig feil er รฅ bruke resultatet av IndexOf-funksjonen uten รฅ sjekke det fรธrst. Nรฅr IndexOf ikke finner tegnet, returnerer den -1, og รฅ sende -1 til Substring utlรธser unntaket. Fรธlgende kode beskytter mot dette:
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
Validering av indeksen fรธr kallet sรธrger for at applikasjonen kjรธrer problemfritt, selv nรฅr inndatastrengen ikke inneholder tegnet du forventer.
Hente en delstreng fรธr eller etter et tegn
En vanlig oppgave er f.eks.tracรฅ dele teksten som vises fรธr eller etter et bestemt tegn, for eksempel รฅ dele en e-postadresse ved @-tegnet. VB.Net tilbyr ikke en dedikert funksjon for dette, men du kan kombinere IndexOf med Substring for รฅ oppnรฅ det.
Tekst fรธr et tegn: Kall IndexOf for รฅ finne tegnet, og send deretter den indeksen som lengden til 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
Koden skriver ut guru99, den delen av strengen som stรฅr fรธr @-tegnet.
Tekst etter et tegn: legg til 1 i indeksen og la delstrengen kjรธre til slutten av strengen:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
Dette returnerer example.com. Nรฅr et tegn forekommer mer enn รฉn gang, bruk LastIndexOf i stedet for IndexOf for รฅ starte fra den siste forekomsten i stedet for den fรธrste.
Delstreng vs. venstre-, hรธyre- og midtre funksjoner
Visual Basic arver tre eldre strengfunksjoner fra tidligere versjoner: Venstre, Hรธyre og Midt. De befinner seg i Microsoft.VisualBasic-navnerommet og kan fรธles mer kjent for utviklere som kommer fra klassisk VB.
- Venstre(streng, n) returnerer de fรธrste n tegnene i en streng.
- Hรธyre(streng, n) returnerer de siste n tegnene i en streng.
- Midt(streng, start, lengde) returnerer en del fra en startposisjon, omtrent som Delstreng.
Hovedforskjellen er hvordan de teller posisjoner. Mid-funksjonen er รฉn-basert, sรฅ det fรธrste tegnet sitter pรฅ posisjon 1, mens Substring-metoden er nullbasert og begynner รฅ telle pรฅ 0. Substring er standard .NET-tilnรฆrmingen og oppfรธrer seg pรฅ samme mรฅte pรฅ tvers av alle .NET-sprรฅk, sรฅ det er det anbefalte valget for ny kode. Reserver Left, Right og Mid for vedlikehold av eldre Visual Basic-prosjekter.






