Подтвердить что ты не робот

Объединение типов символов влево и вправо

Кажется, что комбинации типов символов могут приводить к неожиданным результатам для результирующего порядка явной операции вставки:

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

Есть ли какое-либо известное решение для этого - то есть способ обеспечения конкатенации в той же последовательности, что и аргументы? Возможно, ответ заключается не в конкатенации разных алфавитов!

4b9b3361

Ответ 1

Вы можете использовать управляющие символы Unicode "вставка слева направо" , u202A ( "Рассматривать следующий текст как встроенный слева-направо" ):

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

См. также Завершение Явных Направленных Вложений и Переопределений, (u202C), подробное описание UNICODE BIDIRECTIONAL ALGORITHM и здесь.