Eliminare i caratteri corrispondenti a un modello

Visual Basic for Applications:
Eliminare i caratteri corrispondenti a un modello

Come fare:

In VBA, è possibile utilizzare la funzione Replace o le espressioni regolari per eliminare caratteri che corrispondono a un pattern. Ecco esempi di entrambi i metodi:

Usando la Funzione Replace

La funzione Replace è semplice per rimuovere caratteri o sequenze specifiche.

Sub DeleteSpecificChars()
    Dim originalString As String
    originalString = "123-ABC-456-XYZ"
    
    ' Rimozione dei trattini
    Dim resultString As String
    resultString = Replace(originalString, "-", "")
    
    Debug.Print originalString ' Prima: 123-ABC-456-XYZ
    Debug.Print resultString ' Dopo: 123ABC456XYZ
End Sub

Usando le Espressioni Regolari

Per pattern più complessi, le espressioni regolari offrono un’alternativa potente.

Prima di tutto, abilita la libreria Microsoft VBScript Regular Expressions tramite Strumenti > Riferimenti nell’Editor di Visual Basic.

Sub DeletePatternChars()
    Dim regEx As Object
    Set regEx = CreateObject("VBScript.RegExp")
    
    Dim strPattern As String
    strPattern = "\d" ' Pattern per corrispondere a tutti i numeri
    
    Con regEx
        .Global = True
        .IgnoreCase = True
        .Pattern = strPattern
    End With
    
    Dim originalString As String
    originalString = "Rimuovi 123 e 456"
    
    ' Utilizzo del metodo Replace per eliminare le corrispondenze
    Dim resultString As String
    resultString = regEx.Replace(originalString, "")
    
    Debug.Print originalString ' Prima: Rimuovi 123 e 456
    Debug.Print resultString ' Dopo: Rimuovi  e 
End Sub

Approfondimento

Storicamente, l’abbinamento di pattern e la manipolazione di stringhe in VBA sono stati piuttosto limitati, specialmente se confrontati con linguaggi di programmazione più moderni che offrono estese librerie standard per queste attività. La funzione Replace è semplice ed efficiente per sostituzioni dirette, ma manca di flessibilità per abbinamenti di pattern più complessi. Qui entrano in gioco le espressioni regolari (RegEx), fornendo una sintassi molto più ricca per l’abbinamento di pattern e la manipolazione di stringhe. Tuttavia, lavorare con RegEx in VBA richiede una configurazione aggiuntiva, come l’abilitazione del riferimento a Microsoft VBScript Regular Expressions, che può rappresentare una barriera per gli utenti meno esperti.

Nonostante queste limitazioni, l’introduzione del supporto RegEx in VBA è stato un passo significativo in avanti, offrendo uno strumento più potente per i programmatori che lavorano con l’elaborazione del testo. In scenari più complessi dove le funzioni incorporate per le stringhe si rivelano insufficienti, le espressioni regolari offrono un’opzione versatile e potente.

Vale la pena notare che per coloro che lavorano in ambienti o progetti dove la performance è critica, l’uso di librerie esterne o l’integrazione con altri linguaggi di programmazione potrebbe offrire prestazioni migliori e più funzionalità. Tuttavia, per molti compiti quotidiani in VBA, questi metodi nativi rimangono una scelta pratica e accessibile.