Merkkijonosta lainausmerkkien poistaminen

Visual Basic for Applications:
Merkkijonosta lainausmerkkien poistaminen

Kuinka:

VBA:ssa on useita lähestymistapoja lainausmerkkien poistamiseen merkkijonosta. Tässä on suoraviivainen esimerkki käyttäen Replace-funktiota, joka etsii tiettyä alijonoa (tässä tapauksessa lainausmerkkiä) merkkijonosta ja korvaa sen toisella alijonolla (tyhjällä merkkijonolla, jos poistetaan).

Sub RemoveQuotesExample()
    Dim originalString As String
    originalString = "'Tämä' on ""testi"" merkkijono."
    
    ' Poista yksittäiset lainausmerkit
    originalString = Replace(originalString, "'", "")
    
    ' Poista kaksoislainausmerkit
    originalString = Replace(originalString, Chr(34), "")
    
    Debug.Print originalString 'Tuloste: Tämä on testi merkkijono.
End Sub

Huomaa, että kaksoislainausmerkkien kohdalla käytämme Chr(34)-funktiota, koska kaksoislainausmerkki on ASCII-merkki 34. Tämä on tarpeen, koska kaksoislainausmerkkejä käytetään myös merkkijonoliteraalien ilmaisemiseen VBA:ssa.

Monimutkaisemmissa skenaarioissa, joissa lainausmerkit voivat olla osa tarpeellista muotoilua (esim. lainatussa sanassa), saattaa tarvita monimutkaisempaa logiikkaa, esimerkiksi Regexin käyttöä tai merkkien käsittelyä yksitellen.

Syväsukellus

VBA on oleellinen osa tehtävien automatisointia Microsoft Office -ohjelmistopaketissa ja tarjoaa rikkaan valikoiman merkkijonojen käsittelyfunktioita, joista Replace on yksi käytetyimmistä. Tämä funktio kuitenkin vain raapaisee pintaa siitä, mitä VBA:ssa on mahdollista saavuttaa merkkijonojen käsittelyn osalta.

Historiallisesti VBA on perinyt edeltäjiltään painotuksen yksinkertaisuuteen toimistotöiden automatisointitehtävissä, mistä johtuen funktioita kuten Replace on toteutettu suoraviivaisesti. Nykyaikaisissa ohjelmointitehtävissä, erityisesti monimutkaisissa merkkijonojen käsittelyissä tai puhdistamisessa, VBA saattaa kuitenkin osoittaa rajoituksensa.

Tällaisissa tapauksissa ohjelmoijat saattavat yhdistää VBA:n säännöllisiin lausekkeisiin (käyttäen VBScript_RegExp_55.RegExp-objektia) saadakseen lisää joustavuutta ja tehoa merkkijonojen jäsentämisessä ja käsittelyssä. Tämä lähestymistapa kuitenkin lisää monimutkaisuutta ja vaatii vankan ymmärryksen regex-kuvioista, mikä ei ehkä sovi kaikille käyttäjille.

Rajoituksistaan huolimatta VBA:n Replace-funktio tehokkaasti kattaa monet yleiset skenaariot, jotka liittyvät lainausmerkkien poistamiseen merkkijonoista. Se tarjoaa nopean ja helpon ratkaisun useimpiin merkkijonokäsittelyn tarpeisiin ilman syvempää sukellusta monimutkaisempaan regex-maailmaan. Niille, jotka saavuttavat Replace- ja muiden perusmerkkijonofunktioiden rajat, regexin tutkiminen VBA:ssa tai monimutkaisempiin merkkijono-operaatioihin räätälöidyn kielen harkitseminen voi olla seuraavat parhaat askeleet.