Замена кодов символов Unicode на сами символы
- Макросы VBA Excel
- Разное
- Перевод и кодировка
- текстовые строки
- Разное
|
Функция позволяет произвести замену в текстовой строке кодов символов Unicode на их значения
В функции используются регулярные выражения (RegExp)
Пример использования функции ReplaceUnicodeChars:
Sub ЗаменаКодовСимволовВСтроке()
' исходная текстовая строка, содержащая коды символов Unicode
txt$ = "Санаторий\u2013профилакторий \u201dЛесная сказка\u201d приглашает Вас!"
res$ = ReplaceUnicodeChars(txt) ' заменяем коды на симолы
Debug.Print res$ ' выводит: Санаторий–профилакторий ”Лесная сказка” приглашает Вас!
End Sub
Function ReplaceUnicodeChars(ByVal txt$) As String
' ищет в тексте txt$ коды символов Unicode (типа \u2013, \u201d)
' и заменяет коды этих символов на сами символы
On Error Resume Next: Err.Clear
Static REGEXP As Object
If REGEXP Is Nothing Then
Set REGEXP = CreateObject("VBScript.RegExp")
REGEXP.Global = True
REGEXP.Pattern = "\\u[0-9a-f]{4}"
End If
If REGEXP.test(txt) Then ' если в тексте присутствуют коды символов
Set objMatches = REGEXP.Execute(txt)
For i = 0 To objMatches.Count - 1
code$ = objMatches.Item(i).Value ' очередной найденный код (например, \u201d)
charcode& = Val(Replace(code$, "\u", "&H")) ' получаем код символа
If charcode& Then txt = Replace(txt, code$, ChrW(charcode&)) ' выполняем замену кода на символ
Next
End If
ReplaceUnicodeChars = txt
End Function
|