14

を使用して左から右 (LTR) と右から左 (RTL) のテキストを組み合わせるとpaste、結果の順序に予期しない結果が生じる可能性があるようです。

(x = paste(c('green', 'أحمر', 'أزرق'), collapse=' ')) # arabic for blue and red
#> [1] "green أحمر أزرق"
paste(x, 'yellow')
#> [1] "green أحمر أزرق yellow"
paste(x, 123)
#> [1] "green أحمر أزرق 123"

これに対する既知の解決策はありますか?つまり、引数が与えられたのと同じ順序で連結を確実にする方法はありますか? おそらく答えは、異なるアルファベットを連結しないことです!

4

1 に答える 1

4

Unicode 制御文字'left-to-right embedded'を使用することができますu202A("Treat the following text as embedded left-to-right"):

paste(x, "\u202A", 123)
# [1] "green أحمر أزرق ‭ 123"

明示的な方向埋め込みと上書きの終了、( u202C)、UNICODE BIDIRECTIONAL ALGORITHMの完全な説明、およびこちらも参照してください。

于 2017-07-14T18:10:08.940 に答える