连接左对齐字符类型和右对齐字符类型

geo*_*ory 13 unicode r bidi arabic arabic-support

似乎字符类型的组合可能会对显式粘贴操作的结果顺序产生意外结果:

(x = paste(c('green','????', '????'), collapse=' ')) # arabic for blue and red
#> [1] "green ???? ????"
paste(x, 'yellow')
#> [1] "green ???? ???? yellow"
paste(x, 123)
#> [1] "green ???? ???? 123"
Run Code Online (Sandbox Code Playgroud)

有没有任何已知的解决方案 - 即确保连接的顺序与给出的参数相同?也许答案是不要连接不同的字母表!

Hen*_*rik 4

您可以使用 Unicode 控制字符“从左到右嵌入”u202A(“将以下文本视为从左到右嵌入”):

\n\n
paste(x, "\\u202A", 123)\n# [1] "green \xd8\xa3\xd8\xad\xd9\x85\xd8\xb1 \xd8\xa3\xd8\xb2\xd8\xb1\xd9\x82 \xe2\x80\xad 123"\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

另请参阅终止显式定向嵌入和覆盖( )、 UNICODE 双向算法u202C的详细说明以及此处

\n