Slette tegn som samsvarer med et mønster

Visual Basic for Applications:
Slette tegn som samsvarer med et mønster

Hvordan:

I VBA kan du bruke Replace-funksjonen eller regulære uttrykk for å slette tegn som matcher et mønster. Her er eksempler på begge metodene:

Bruk av Replace-Funksjonen

Replace-funksjonen er grei for å fjerne spesifikke tegn eller sekvenser.

Sub DeleteSpecificChars()
    Dim originalString As String
    originalString = "123-ABC-456-XYZ"
    
    ' Fjerner bindestreker
    Dim resultString As String
    resultString = Replace(originalString, "-", "")
    
    Debug.Print originalString ' Før: 123-ABC-456-XYZ
    Debug.Print resultString ' Etter: 123ABC456XYZ
End Sub

Bruk av Regulære Uttrykk

For mer komplekse mønstre, tilbyr regulære uttrykk et kraftig alternativ.

Først, aktiver Microsoft VBScript Regular Expressions-biblioteket via Verktøy > Referanser i Visual Basic-editoren.

Sub DeletePatternChars()
    Dim regEx As Object
    Set regEx = CreateObject("VBScript.RegExp")
    
    Dim strPattern As String
    strPattern = "\d" ' Mønster for å matche alle sifre
    
    With regEx
        .Global = True
        .IgnoreCase = True
        .Pattern = strPattern
    End With
    
    Dim originalString As String
    originalString = "Remove 123 and 456"
    
    ' Bruker Replace-metoden for å slette treff
    Dim resultString As String
    resultString = regEx.Replace(originalString, "")
    
    Debug.Print originalString ' Før: Remove 123 and 456
    Debug.Print resultString ' Etter: Remove  and 
End Sub

Dypdykk

Historisk sett har mønstermatching og manipulering av strenger i VBA vært noe begrenset, spesielt sammenliknet med mer moderne programmeringsspråk som tilbyr omfattende standardbiblioteker for disse oppgavene. Replace-funksjonen er enkel og effektiv for direkte substitusjoner, men mangler fleksibiliteten for mer kompleks mønstermatching. Her kommer regulære uttrykk (RegEx) inn, som tilbyr en mye rikere syntaks for mønstermatching og manipulering av strenger. Likevel krever arbeid med RegEx i VBA ekstra oppsett, som å aktivere referansen til Microsoft VBScript Regular Expressions, noe som kan være en barriere for nye brukere.

Til tross for disse begrensningene, var introduksjonen av RegEx-støtte i VBA et betydelig skritt framover, og tilbød et kraftigere verktøy for programmerere som arbeider med tekstbehandling. I mer komplekse scenarioer hvor innebygde strengfunksjoner kommer til kort, tilbyr regulære uttrykk et allsidig og kraftig alternativ.

Det er verdt å merke seg at for de som arbeider i miljøer eller prosjekter hvor ytelse er kritisk, kan det å bruke eksterne biblioteker eller integrere med andre programmeringsspråk gi bedre ytelse og flere funksjoner. Likevel, for mange dag-til-dag-oppgaver i VBA, forblir disse innebygde metodene et praktisk og tilgjengelig valg.