Я надеюсь, что мое решение поможет. Во-первых, как вы, наверное, знаете, текст U+041A — это шестнадцатеричный код. Я хочу это подчеркнуть, потому что считаю плохой идеей конвертировать эти коды в кириллицу. Я думаю, что лучше всего работать с вашим текстом через шестнадцатеричный Unicodes. Другими словами, при работе с текстом имейте в виду юникоды букв, а не буквы как таковые.
Таким образом, будет проще выполнять регулярное выражение и другие преобразования в вашем тексте. Если вы хотите прочитать свой текст как кириллицу, вам просто нужно попросить R интерпретировать ваш вектор Unicodes как текст UTF-8 с помощью такой функции, как intToUtf8()
.
Первое, что вам нужно сделать, это разделить каждое кириллическое слово. Таким образом, вы хотите обнаружить каждое пустое место в тексте и заменить его соответствующим юникодом (да, даже белые пробелы имеют юникод). После этого вам нужно разделить каждую букву (раньше я разделял каждое слово, теперь я хочу разделить каждую букву или символ, из которых состоит ваша фраза).
Далее мне нужно исключить другие метасимволы (› и +) и оставить только шестнадцатеричный код в каждом элементе вектора a
. После этого я просто заменяю каждую букву U на 0x, чтобы изолировать только шестнадцатеричную часть Unicode. Этот способ проще, потому что для чтения кода U041A
как Unicode мне нужно вставить одну обратную косую черту (что приводит к \U041A
) перед U, и я изо всех сил пытался это сделать. После этих шагов каждый элемент вектора a
представляет собой символ (или букву), образующий вашу фразу.
library(tibble)
library(stringr)
text <- "<U+041A><U+0440><U+0430><U+0433><U+0443><U+0458><U+0435><U+0432><U+0430><U+0446> <U+0410><U+0421>"
a <- str_replace_all(text, " ", replacement = "<U+0020>") # replace white spaces
a <- unlist(str_split(a, "[<]"))
a <- a[-1]
a <- str_replace_all(a, ">", "")
a <- str_replace_all(a, "\\+", "")
a <- str_replace_all(a, "U", "0x")
intToUtf8(a)
[1] "Крагујевац АС"
person
Pedro Faria
schedule
01.12.2020