Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование текстовой строки - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразование текстовой строки (Макросы/Sub)
Преобразование текстовой строки
Poltava Дата: Среда, 30.10.2019, 12:15 | Сообщение № 1
Группа: Друзья
Ранг: Форумчанин
Сообщений: 230
Репутация: 50 ±
Замечаний: 0% ±

Добрый день. Не могу разобраться с одним вопросом. Есть строка вида
Цитата
"\u043f\u043e\u043b\u0443\u0442\u043e\u0440\u043d\u044b\u0439"

Что соответствует строке
Цитата
"полуторный"

На сколько я смог понять первая строка это юникод в 16 ричном формате. Кто подскажет как средствами VBA перевести эту строку в нормальный читаемый вид.
 
Ответить
СообщениеДобрый день. Не могу разобраться с одним вопросом. Есть строка вида
Цитата
"\u043f\u043e\u043b\u0443\u0442\u043e\u0440\u043d\u044b\u0439"

Что соответствует строке
Цитата
"полуторный"

На сколько я смог понять первая строка это юникод в 16 ричном формате. Кто подскажет как средствами VBA перевести эту строку в нормальный читаемый вид.

Автор - Poltava
Дата добавления - 30.10.2019 в 12:15
Апострофф Дата: Среда, 30.10.2019, 12:52 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 210
Репутация: 74 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте. Если в лоб, то как то так -
[vba]
Код
Sub asd()
s = "\u043f\u043e\u043b\u0443\u0442\u043e\u0440\u043d\u044b\u0439"
a = Split(s, "\u")
For i = 1 To UBound(a)
  a(i) = ChrW(Val("&H" & a(i)))
Next i
s = Join(a, "")
End Sub
[/vba]
 
Ответить
СообщениеЗдравствуйте. Если в лоб, то как то так -
[vba]
Код
Sub asd()
s = "\u043f\u043e\u043b\u0443\u0442\u043e\u0440\u043d\u044b\u0439"
a = Split(s, "\u")
For i = 1 To UBound(a)
  a(i) = ChrW(Val("&H" & a(i)))
Next i
s = Join(a, "")
End Sub
[/vba]

Автор - Апострофф
Дата добавления - 30.10.2019 в 12:52
Poltava Дата: Среда, 30.10.2019, 17:09 | Сообщение № 3
Группа: Друзья
Ранг: Форумчанин
Сообщений: 230
Репутация: 50 ±
Замечаний: 0% ±

Апострофф, Спасибо. На базе вашего кода сделал небольшую UDF для корректной обработки строк типа
Цитата
NATUREL (\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0442\u0435\u043b\u0435\u0441\u043d\u044b\u0439)

Но с трудом вериться что нет такой штатной функции в VBA.
[vba]
Код
Public Function Convert_UTF16_to_UTF8(str As String)
    For i = 1 To Len(str)
        If Mid(str, i, 2) = "\u" Then
            Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & ChrW(Val("&H" & Mid(str, i + 2, 4)))
            i = i + 5
        Else
            Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & Mid(str, i, 1)
        End If
    Next i
End Function
[/vba]


Сообщение отредактировал Poltava - Четверг, 31.10.2019, 11:46
 
Ответить
СообщениеАпострофф, Спасибо. На базе вашего кода сделал небольшую UDF для корректной обработки строк типа
Цитата
NATUREL (\u0441\u0432\u0435\u0442\u043b\u044b\u0439 \u0442\u0435\u043b\u0435\u0441\u043d\u044b\u0439)

Но с трудом вериться что нет такой штатной функции в VBA.
[vba]
Код
Public Function Convert_UTF16_to_UTF8(str As String)
    For i = 1 To Len(str)
        If Mid(str, i, 2) = "\u" Then
            Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & ChrW(Val("&H" & Mid(str, i + 2, 4)))
            i = i + 5
        Else
            Convert_UTF16_to_UTF8 = Convert_UTF16_to_UTF8 & Mid(str, i, 1)
        End If
    Next i
End Function
[/vba]

Автор - Poltava
Дата добавления - 30.10.2019 в 17:09
Апострофф Дата: Среда, 30.10.2019, 18:28 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 210
Репутация: 74 ±
Замечаний: 0% ±

Excel 2003
Poltava, Convert_UTF16_to_UTF8 != ConvertText :) Поспешили?
 
Ответить
СообщениеPoltava, Convert_UTF16_to_UTF8 != ConvertText :) Поспешили?

Автор - Апострофф
Дата добавления - 30.10.2019 в 18:28
Poltava Дата: Четверг, 31.10.2019, 11:48 | Сообщение № 5
Группа: Друзья
Ранг: Форумчанин
Сообщений: 230
Репутация: 50 ±
Замечаний: 0% ±

Да поправил код функции
 
Ответить
СообщениеДа поправил код функции

Автор - Poltava
Дата добавления - 31.10.2019 в 11:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразование текстовой строки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!