VB.NET-understrengsmetode med EKSEMPEL
โก Smart opsummering
VB.Net delstreng extracBearbejder en del af en streng ved at angive et startindeks og en valgfri lรฆngde. Metoden tilhรธrer String-klassen, tรฆller tegn fra nul og returnerer en helt ny streng uden at รฆndre originalen.
Hvad er en delstreng?
Funktionen Substring bruges til at hente en del af en bestemt streng. Denne metode er defineret i String-klassen i Microsoft VB.NetDu skal angive startindekset, hvorfra strengen skal eks.tracted. Strengen vil vรฆre extracfra det indeks op til den lรฆngde, du angiver.
Fรธr ekstractekst, hjรฆlper det at forstรฅ den syntaks, som Substring-metoden forventer.
Syntaks for understreng
Funktionen accepterer to argumenter som vist i fรธlgende syntaks:
Public Function Substring(ByVal start_Index As Integer, ByVal sub_length As Integer) As String
Her,
- Nรธgleordet ByVal angiver pass-by-value, som er en mekanisme til at overfรธre argumenter til funktioner.
- start_Index er det indeks, hvorfra delstrengen hentes.
- sub_length angiver den lรฆngde, som strengen kopieres op til fra start_Index. Denne lรฆngde mรฅles i antal tegn. Funktionen returnerer ex.tracted delstreng.
Startindekset er nulbaseret, sรฅ det fรธrste tegn i strengen sidder pรฅ position 0 i stedet for position 1.
Med den definerede syntaks viser fรธlgende eksempler Substring-metoden i brug i en konsolapplikation.
Eksempler
Trin 1) Opret en ny konsolapplikation.
Trin 2) Tilfรธj 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
Trin 3) Klik pรฅ Start-knappen i vรฆrktรธjslinjen for at udfรธre koden. Du bรธr fรฅ fรธlgende resultat:
Vi har brugt fรธlgende kode:
Forklaring af Code:
- Oprettelse af et modul ved navn Modul1.
- Start af hovedunderproceduren.
- Definering af en strengvariabel med navnet st og tildeling af vรฆrdien Guru99 til det.
- Definering af en strengvariabel med navnet 'subst' som en delstreng af strengen 'st' fra indeks 0 og en lรฆngde pรฅ 4 tegn.
- Udskrivning af noget tekst og ovenstรฅende understreng pรฅ konsollen.
- Sรฆtter konsolvinduet pรฅ pause i et stykke tid og venter pรฅ, at brugeren foretager handling for at lukke det.
- Afslutning af hovedunderproceduren.
- Slut pรฅ modulet.
Et argument
Hvad hvis vi kun sender รฉt argument til funktionen? Funktionen kopierer alle data i strengen, der begynder fra det indeks. Det, der sker, er, at Substring-funktionen internt kopierer alle strengdata pรฅ det indeks sรฅvel som det, der fรธlger efter det indeks. 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
Klik pรฅ knappen Start for at kรธre koden. Det skal returnere fรธlgende:
Funktionen Substring returnerede 99. Vi sendte parameter 4 til funktionen, hvilket betyder, at den vil begynde at extract delstrengen fra tegnet ved indeks 4 til slutningen af โโstrengen. 9 er tegnet ved indeks 4 i strengen Guru99, deraf eks.tractionen startede der.
Udover at trimme fra et enkelt indeks kan Substring-metoden ogsรฅ mรฅlrette tegn midt i en streng.
Mellemste tegn
Det er ogsรฅ muligt for os at fรฅ de midterste tegn i den pรฅgรฆldende streng. I dette tilfรฆlde skal vi kun angive startindekset og lรฆngden af โโden streng, vi har brug for. I det fรธlgende eksempel fรฅr vi en understreng af den angivne streng fra indeks 2, og strengen vil have en lรฆngde 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
Klik pรฅ knappen Start pรฅ vรฆrktรธjslinjen for at kรธre koden. Du fรฅr fรธlgende resultat:
I ovenstรฅende eksempel returnerede delstrengsfunktionen ru. Vi sendte parametrene (2, 2) til funktionen. De fรธrste 2 instruerer funktionen til at starte eksempelettraction af delstrengen fra indeks 2, mens den anden 2 instruerer funktionen til at returnere en delstreng med en lรฆngde pรฅ kun 2 tegn. Det betyder, at eks.tracDelstrengens udformning skal begynde fra elementet, der er placeret ved indeks 2 i strengen. Guru99, hvilket er r. Da den returnerede delstreng kun skal have en lรฆngde pรฅ 2 tegn, er f.eks.trac`tion` vil ikke gรฅ forbi 'u', derfor returnerede den 'ru'.
En Char
Vi kan bruge Substring-funktionen til at fรฅ et enkelt tegn fra en streng. I et sรฅdant tilfรฆlde er det en nรธdvendighed for dig at foretage en tildeling, men karakteren kan tilgรฅs direkte. Det her er lidt hurtigere. Fรธlgende eksempel viser to mรฅder, hvorpรฅ vi kan opnรฅ dette:
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
Klik pรฅ knappen Start for at kรธre koden. Du fรฅr fรธlgende resultat:
Vi har brugt fรธlgende kode:
Forklaring af Code:
- Oprettelse af et modul ved navn Modul1.
- Start af hovedunderproceduren.
- Definering af en strengvariabel med navnet st og tildeling af vรฆrdien Guru99 til det.
- Definere en strengvariabel ved navn mid1 og fรฅ tegnet ved indeks 1 af String st. Dette tegn vil blive tildelt variablen mid1.
- Udskrivning af ovenstรฅende tegn pรฅ konsollen.
- Definere en strengvariabel ved navn mid2 og fรฅ tegnet ved indeks 1 med en lรฆngde pรฅ 1 fra String st. Lรฆngden pรฅ 1 betyder, at det vil returnere det samme tegn ved startindekset. Optรฆllingen begynder fra det startindeks, som du angiver. Dette tegn vil blive tildelt variablen mid2.
- Udskrivning af ovenstรฅende tegn pรฅ konsollen.
- Sรฆtter konsolvinduet pรฅ pause i et stykke tid og venter pรฅ, at brugeren foretager handling for at lukke det.
- Afslutning af hovedunderproceduren.
- Slut pรฅ modulet.
Nรฅr du fรธrst er tryg ved eks.tracNรฅr man bruger delstrenge, er det vรฆrd at vide, hvordan man hรฅndterer de fejl, som metoden kan forรฅrsage.
Almindelige delstrengsfejl og hvordan man undgรฅr dem
Substring-metoden er streng omkring de vรฆrdier, du sender til den. Nรฅr et argument falder uden for strengens grรฆnser, kaster VB.Net en ArgumentOutOfRangeException og stopper programmet under kรธrsel. Forstรฅelse af reglerne hjรฆlper dig med at undgรฅ denne almindelige fejl.
Metoden giver anledning til undtagelsen i tre situationer:
- start_Index er et negativt tal.
- start_Index er stรธrre end lรฆngden af โโstrengen.
- Summen af โโstart_Index og sub_length peger ud over slutningen af โโstrengen.
En hyppig fejl er at bruge resultatet af IndexOf-funktionen uden fรธrst at kontrollere det. Nรฅr IndexOf ikke finder tegnet, returnerer den -1, og at sende -1 til Substring udlรธser undtagelsen. Fรธlgende kode beskytter mod 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 af indekset fรธr kaldet sikrer, at din applikation kรธrer problemfrit, selv nรฅr inputstrengen ikke indeholder det forventede tegn.
Hentning af en delstreng fรธr eller efter et tegn
En almindelig opgave er f.eks.tracat opdele teksten, der vises fรธr eller efter et bestemt tegn, f.eks. at opdele en e-mailadresse ved @-tegnet. VB.Net har ikke en dedikeret funktion til dette, men du kan kombinere IndexOf med Substring for at opnรฅ det.
Tekst fรธr et tegn: Kald IndexOf for at finde tegnet, og send derefter indekset som lรฆngden 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 udskriver guru99, den del af strengen der sidder fรธr @-tegnet.
Tekst efter et tegn: Tilfรธj 1 til indekset og lad delstrengen kรธre til slutningen af โโstrengen:
Dim domainPart As String = email.Substring(position + 1) Console.WriteLine(domainPart)
Dette returnerer example.com. Nรฅr et tegn forekommer mere end รฉn gang, skal du bruge LastIndexOf i stedet for IndexOf for at starte fra den sidste forekomst i stedet for den fรธrste.
Delstreng vs. venstre-, hรธjre- og midterfunktioner
Visual Basic arver tre รฆldre strengfunktioner fra tidligere versioner: Venstre, Hรธjre og Midterste. De findes i Microsoft.VisualBasic-navneomrรฅdet og kan fรธles mere velkendt for udviklere, der kommer fra klassisk VB.
- Venstre(streng, n) returnerer de fรธrste n tegn i en streng.
- Hรธjre(streng, n) returnerer de sidste n tegn i en streng.
- Midt(streng, start, lรฆngde) returnerer en del fra en startposition, ligesom Delstreng.
Den vigtigste forskel er, hvordan de tรฆller positioner. Mid-funktionen er รฉn-baseret, sรฅ det fรธrste tegn sidder pรฅ position 1, mens Substring-metoden er nulbaseret og begynder at tรฆlle ved 0. Substring er standard .NET-tilgangen og opfรธrer sig pรฅ samme mรฅde pรฅ tvรฆrs af alle .NET-sprog, sรฅ det er det anbefalede valg til ny kode. Reserver Left, Right og Mid til vedligeholdelse af รฆldre Visual Basic-projekter.






