Visual Basic for Applications:
Видалення лапок з рядка
Як?
У VBA є кілька підходів до видалення лапок з рядка. Ось простий приклад використання функції Replace
, яка шукає конкретний підрядок (у цьому випадку, лапку) в рядку та замінює його іншим підрядком (пустим рядком, якщо виконується видалення).
Sub RemoveQuotesExample()
Dim originalString As String
originalString = "'This' is a ""test"" string."
' Видалити одинарні лапки
originalString = Replace(originalString, "'", "")
' Видалити подвійні лапки
originalString = Replace(originalString, Chr(34), "")
Debug.Print originalString 'Вивід: This is a test string.
End Sub
Зауважте, що для подвійних лапок ми використовуємо Chr(34)
, тому що подвійна лапка є символом ASCII з номером 34. Це необхідно, оскільки подвійні лапки також використовуються для позначення літеральних рядків у VBA.
Для більш тонких сценаріїв, де лапки можуть бути частиною необхідного форматування (наприклад, всередині слова в лапках), може знадобитись більш складна логіка, можливо, з використанням Regex або розбору символ за символом.
Поглиблений огляд
VBA, будучи основним засобом автоматизації завдань у пакеті Microsoft Office, пропонує багатий набір функцій для маніпулювання рядками, причому Replace
є однією з найчастіше використовуваних функцій. Однак ця функція лише частково відображає можливості VBA з точки зору маніпулювання рядками.
Історично, VBA перейняла від своїх попередників акцент на простоті для задач автоматизації офісних завдань, тому проста реалізація функцій на кшталт Replace
. Однак, для сучасних програмувальних задач, особливо тих, що передбачають складні маніпуляції з рядками або їх санітацію, VBA може виявити свої обмеження.
У таких випадках програмісти можуть вдатися до комбінування VBA з регулярними виразами (за допомогою об’єкта VBScript_RegExp_55.RegExp
) для більшої гнучкості та потужності у розборі та маніпуляції з рядками. Цей підхід, однак, запроваджує додаткову складність і вимагає міцного розуміння шаблонів regex, що може бути не під силу всім користувачам.
Незважаючи на свої обмеження, функція Replace
VBA ефективно покриває багато поширених сценаріїв пов’язаних з видаленням лапок з рядків. Вона служить швидким та легким рішенням для більшості потреб маніпулювання рядками без занурення у більш складну територію regex. Для тих, хто досягає меж можливостей Replace
та інших базових функцій маніпулювання рядками, вивчення regex у VBA або розгляд мови, спеціалізованої на складних операціях з рядками, можуть стати наступними кроками.