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.

  • ๐Ÿ”ข Nullbasert indeks: Substring-metoden teller tegn fra indeks 0, slik at den fรธrste bokstaven i en streng sitter i posisjon null.
  • โ˜‘๏ธ To overbelastninger: ร… sende ett argument returnerer alt fra den indeksen og utover, mens to argumenter returnerer et fast antall tegn.
  • โœ‚๏ธ Extract etter posisjon: Kombiner delstreng med indeks eller siste indeks for รฅ fange opp teksten fรธr eller etter et bestemt tegn.
  • โš ๏ธ Sikker indeksering: En negativ indeks eller indeks utenfor rekkevidde kaster et ArgumentOutOfRangeException, sรฅ valider verdier fรธr du kaller metoden.
  • ๐Ÿ”ค Uforanderlig resultat: Delstreng returnerer en ny streng og lar kildestrengen vรฆre uendret, slik at den samsvarer med uforanderligheten til .NET-strenger.
  • ๐Ÿค– AI-hjelp: GitHub Copilot og IntelliCode I Visual Studio 2026 foreslรฅs riktige delstrengkall og indekser utenfor rekkevidde flagges mens du skriver.

VB.Net-delstreng

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:

Eksempel pรฅ utdata for VB.Net-delstreng

Vi har brukt fรธlgende kode:

Eksempel pรฅ VB.Net-strengkode

Forklaring til Code:

  1. Opprette en modul kalt Module1.
  2. Starter hovedunderprosedyren.
  3. Definere en strengvariabel med navnet st og tilordne verdien Guru99 til det.
  4. Definere en strengvariabel kalt 'subst' som en delstreng av strengen 'st' fra indeks 0 og en lengde pรฅ 4 tegn.
  5. Skriver ut litt tekst og understrengen ovenfor pรฅ konsollen.
  6. Setter konsollvinduet pรฅ pause en stund mens du venter pรฅ at brukeren skal gjรธre noe for รฅ lukke det.
  7. Slutt pรฅ hoveddelprosedyren.
  8. 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:

VB.Net-delstreng med ett argument

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:

VB.Net Delstreng Mellomtegn

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:

VB.Net Delstreng enkelttegns utdata

Vi har brukt fรธlgende kode:

VB.Net Delstreng enkelttegnskode

Forklaring til Code:

  1. Opprette en modul kalt Module1.
  2. Starter hovedunderprosedyren.
  3. Definere en strengvariabel med navnet st og tilordne verdien Guru99 til det.
  4. Definere en strengvariabel kalt mid1 og fรฅ tegnet ved indeks 1 av String st. Dette tegnet vil bli tildelt variabelen mid1.
  5. Skriver ut tegnet ovenfor pรฅ konsollen.
  6. 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.
  7. Skriver ut tegnet ovenfor pรฅ konsollen.
  8. Setter konsollvinduet pรฅ pause en stund mens du venter pรฅ at brukeren skal gjรธre noe for รฅ lukke det.
  9. Slutt pรฅ hoveddelprosedyren.
  10. 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.

Spรธrsmรฅl og svar

Ja. Substring-metoden er nullbasert, sรฅ det fรธrste tegnet i strengen er pรฅ indeks 0, det andre pรฅ indeks 1, og sรฅ videre. Det er viktig รฅ telle fra null nรฅr du beregner startposisjonen.

Nei. Strenger i VB.Net er uforanderlige, sรฅ Substring-metoden endrer aldri den opprinnelige strengen. Den returnerer en helt ny streng som inneholder eks.tractede tegn, mens kildestrengen beholder sin opprinnelige verdi uendret.

Delstreng f.eks.tracts รฉn kontinuerlig del av en streng ved hjelp av en indeks og lengde. Dele deler en streng inn i en matrise med mindre strenger der det vises et skilletegn, for eksempel et komma eller mellomrom. Bruk Split for lister og Substring for stykker.

Hvis lengden 0 sendes, returneres en tom streng (โ€œโ€), ikke ingenting. Kallet er gyldig og genererer ikke et unntak, forutsatt at startindeksen fortsatt faller innenfor strengens grenser.

Delstrengen beholder den delen av strengen du spesifiserer og forkaster resten. Fjern-metoden gjรธr det motsatte: den sletter tegnene som starter ved en gitt indeks og returnerer strengen som er igjen. De er komplementรฆre operasjoner.

Ja. Mellomrom, tabulatorer og tegnsetting teller hvert som ett tegn nรฅr delstrengmetoden beregner startindeksen og lengden. Hver posisjon i strengen, inkludert mellomrom, er en del av antallet, ikke bare de synlige bokstavene.

Ja. GitHub Copilot i Visual Studio 2026 blir en kommentar pรฅ vanlig engelsk, for eksempel extracรฅ legge inn teksten fรธr et komma, i et fungerende delstrengkall med IndexOf. Sjekk alltid de genererte indeksene for รฅ bekrefte at de holder seg innenfor rekkevidden.

Ja. Visual Studio 2026 kobler GitHub Copilot med intelliCode for รฅ flagge sannsynlige indekser utenfor rekkevidde, foreslรฅ riktige argumenter og fullfรธre delstrengkall mens du skriver, helping Du forhindrer et ArgumentOutOfRangeException fรธr du kjรธrer programmet.

Oppsummer dette innlegget med: