Учитывая строковое шестнадцатеричное представление символа Unicode, я хотел бы напечатать символ Unicode, который он представляет
julia> s1, s2 = raw"\u0041", raw"\x41"
julia> println(s1,' ', s2)
\u0041 \x41
Вместо этого я хочу, чтобы он печатал "A A"
Вариант использования: Для демонстрации я хотел бы перебрать диапазон значений и распечатать карту из шестнадцатеричного представления в Unicode:
for ii = 0x0021 : 0x007f
hex_rep = string(ii, base=16)
unicode = raw"\u" * lpad(hex_rep, 4, '0')
println(hex_rep, " -> ", unicode)
end
Почему вы сначала конвертируете в строку? Почему бы не перейти напрямую от шестнадцатеричного к символу?
@DNF Потому что я давно не использовал язык, который различает строки и символы, и мой разум был сосредоточен на том, чтобы заставить его работать со строками ?. Таким образом, Char - правильный способ для моего фактического варианта использования, а unescape_string - лучший подход к моему вопросу, как задано.
Вы можете просто сделать:
julia> Char.(0x0021 : 0x007f)
95-element Vector{Char}:
'!': ASCII/Unicode U+0021 (category Po: Punctuation, other)
'"': ASCII/Unicode U+0022 (category Po: Punctuation, other)
'#': ASCII/Unicode U+0023 (category Po: Punctuation, other)
⋮
'}': ASCII/Unicode U+007D (category Pe: Punctuation, close)
'~': ASCII/Unicode U+007E (category Sm: Symbol, math)
'\x7f': ASCII/Unicode U+007F (category Cc: Other, control)
В других случаях рассмотрите возможность использования вышеупомянутого unescape_string
Возможно docs.julialang.org/en/v1/base/strings/#Base.unescape_string