r - 如何正确地连接R中的比迪字符串?

标签 r shiny string-concatenation bidi urdu

我想将标记添加到从右到左书写的(乌尔都语)文本中。我正在尝试将gsub用于此目的,但到目前为止我尝试过的所有操作均未产生所需的输出

text <- "یہ جملہ ایک مثال کے لیے استعمال کیا جا رہا ہے"
pattern <- "کیا جا"
replaceWith <- paste0("<somemark>", pattern, "</somemark>")
gsub(pattern, replaceWith, text)

gsub返回以下内容
یہ جملہ ایک مثال کے لیے استعمال <somemark>کیا جا</somemark> رہا ہے

期望的输出。

enter image description here

如何实现所需的输出?

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

更新:尽管下面的mysub函数正确连接了字符串(在控制台中),但我仍然面临 Shiny 的应用程序中文本顺序不正确的问题。
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
}

最佳答案

我试了一下。不过,我确实采用了对args进行硬编码的自由方式,而不是从 session 中读取内容。

Server: 

output$mysub <- function(){ # (text=NULL, pattern=NULL)

text <- "یہ جملہ ایک مثال کے لیے استعمال کیا جا رہا ہے"
pattern <- "کیا جا"

Encoding(text) <- "UTF-8"
Encoding(pattern) <- "UTF-8"

print(text)

beforePattern <- substr(text, 1, regexpr(pattern, text)[1]-1)
afterPattern <- substr(text, regexpr(pattern,text)[1] + nchar(pattern), nchar(text))

replaceWith <- paste0("<somemark>", pattern, "</somemark>")
result <- paste(afterPattern, replaceWith, beforePattern)

# result <- paste( beforePattern, replaceWith, afterPattern)
# Encoding(result) <- "UTF-8"
print(length(result))
print(result)

return(result)
}


# ui.R: 

h2( textOutput("mysub") )

我在 Shiny 的网页上得到的输出是:
bidi text output

关于r - 如何正确地连接R中的比迪字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540783/

相关文章:

python - 有什么理由不使用 '+' 连接两个字符串?

sql - 根据另一列中的特定字符在计算 SQL 列中构建字符串

r - Shiny 的仪表板主板高度问题

r - 使用下载处理程序将 ggplot 图像保存为 Shiny 的

azure - 无法使用 Azure API 管理中的返回响应策略返回响应

r - 如何从 Markdown 文件 (*.md) 中提取 R 代码?

r - Docker 是否足以满足具有约 100 个连接的 Shiny 应用程序,或者我是否需要 Shiny 代理?

r - 拆分 R 数据框中的列

r - 绘制具有宽范围数据 R 的散点图

r - doMC vs doSNOW vs doSMP vs doMPI : why aren't the various parallel backends for 'foreach' functionally equivalent?