实际上没有问题gsub
:
text <- dput("یہ جملہ ایک مثال کے لیے استعمال کیا جا رہا ہے")
"<U+06CC><U+06C1> <U+062C><U+0645><U+0644><U+06C1> <U+0627><U+06CC><U+06A9>
<U+0645><U+062B><U+0627><U+0644> <U+06A9><U+06D2> <U+0644><U+06CC><U+06D2>
<U+0627><U+0633><U+062A><U+0639><U+0645><U+0627><U+0644> <U+06A9><U+06CC>
<U+0627> <U+062C><U+0627> <U+0631><U+06C1><U+0627> <U+06C1><U+06D2>"
pattern <- dput("کیا جا")
"<U+06A9><U+06CC><U+0627> <U+062C><U+0627>"
replaceWith <- dput(paste0("<somemark>", pattern, "</somemark>"))
"<somemark><U+06A9><U+06CC><U+0627> <U+062C><U+0627></somemark>"
dput(gsub(pattern, replaceWith, text))
"<U+06CC><U+06C1> <U+062C><U+0645><U+0644><U+06C1> <U+0627><U+06CC><U+06A9>
<U+0645><U+062B><U+0627><U+0644> <U+06A9><U+06D2> <U+0644><U+06CC><U+06D2>
<U+0627><U+0633><U+062A><U+0639><U+0645><U+0627><U+0644> <somemark><U+06A9>
<U+06CC><U+0627> <U+062C><U+0627></somemark> <U+0631><U+06C1><U+0627>
<U+06C1><U+06D2>"
结果的呈现(一个包含从右到左和从左到右字符的字符串)对我来说也很合乎逻辑:
- 字符串的开头包含从右到左的字符,因此从右到左呈现
یہ جملہ ایک مثال کے لیے استعمال
- 然后字符串以从左到右的字符继续。它从左到右渲染并添加到末尾(之前渲染的左侧),
یہ جملہ ایک مثال کے لیے استعمال <somemark>
- 然后字符串以从右到左的字符继续。它从右到左渲染并在最后添加,
یہ جملہ ایک مثال کے لیے استعمال <somemark>کیا جا
- 然后字符串以从左到右的字符继续。它从左到右渲染并在最后添加,
یہ جملہ ایک مثال کے لیے استعمال <somemark>کیا جا</somemark>
- 最后字符串以从右到左的字符结尾。它从右到左渲染并在最后添加。
یہ جملہ ایک مثال کے لیے استعمال <somemark>کیا جا</somemark> رہا ہے
您对应该呈现什么的想法在我看来并不合乎逻辑,但我必须承认我没有从右到左文本呈现的经验。
无论如何,如果格式必须像<b>...</b>
HTML 中的标签一样由渲染器解释,那么它可以完美地工作(在 markdown/html 中):
یہ جملہ ایک مثال کے لیے استعمال <b>کیا جا</b> رہا ہے
呈现为
یہ جملہ جا رہا ہے
我没有设法用闪亮的问号打印任何东西:
???? ???????? ?????? ???????? ???? ?????? ?????????????? <somemark>?????? ????</somemark> ?????? ????