如何在r中正确连接bidi字符串?

Imr*_*Ali 9 r string-concatenation bidi shiny urdu

我想将标记添加到从右到左书写的(乌尔都语)文本.我试图使用gsub用于此目的,但到目前为止我尝试的所有内容都不会产生所需的输出

text <- "?? ???? ??? ???? ?? ??? ??????? ??? ?? ??? ??"
pattern <- "??? ??"
replaceWith <- paste0("<somemark>", pattern, "</somemark>")
gsub(pattern, replaceWith, text)
Run Code Online (Sandbox Code Playgroud)

gsub返回以下内容

?? ???? ??? ???? ?? ??? ??????? <somemark>??? ??</somemark> ??? ??
Run Code Online (Sandbox Code Playgroud)

期望的输出.

在此输入图像描述

如何实现所需的输出?

注意:我甚至无法在帖子中正确排版所需的输出,我不得不依赖图像.

更新:虽然mysub下面的函数正确连接字符串(在控制台中),但我仍然面临闪亮应用程序中文本顺序错误的问题.

mysub <- function(text, pattern){
beforePattern <- substr(text, 1, regexpr(pattern, text)[1]-1)
afterPattern <- substr(text, regexpr(pattern,text)[1] + nchar(pattern), nchar(text))
result <- paste(afterPattern, replaceWith, beforePattern)
result
}
Run Code Online (Sandbox Code Playgroud)

R.S*_*.S. 1

我尝试了一下。不过,我确实对参数进行了硬编码,而不是从会话中读取。

\n\n
Server: \n\noutput$mysub <- function(){ # (text=NULL, pattern=NULL)\n\ntext <- "\xdb\x8c\xdb\x81 \xd8\xac\xd9\x85\xd9\x84\xdb\x81 \xd8\xa7\xdb\x8c\xda\xa9 \xd9\x85\xd8\xab\xd8\xa7\xd9\x84 \xda\xa9\xdb\x92 \xd9\x84\xdb\x8c\xdb\x92 \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x85\xd8\xa7\xd9\x84 \xda\xa9\xdb\x8c\xd8\xa7 \xd8\xac\xd8\xa7 \xd8\xb1\xdb\x81\xd8\xa7 \xdb\x81\xdb\x92"\npattern <- "\xda\xa9\xdb\x8c\xd8\xa7 \xd8\xac\xd8\xa7"\n\nEncoding(text) <- "UTF-8"\nEncoding(pattern) <- "UTF-8"\n\nprint(text)\n\nbeforePattern <- substr(text, 1, regexpr(pattern, text)[1]-1)\nafterPattern <- substr(text, regexpr(pattern,text)[1] + nchar(pattern), nchar(text))\n\nreplaceWith <- paste0("<somemark>", pattern, "</somemark>")\nresult <- paste(afterPattern, replaceWith, beforePattern)\n\n# result <- paste( beforePattern, replaceWith, afterPattern)\n# Encoding(result) <- "UTF-8"\nprint(length(result))\nprint(result)\n\nreturn(result)\n}\n\n\n# ui.R: \n\nh2( textOutput("mysub") )\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在闪亮网页上得到的输出是:\n双向文本输出

\n