将数值连接到JS中阿拉伯字符串的右侧

Concatenate numeric value to the right side of an Arabic String in JS

var 数据 = "عينات";

var num = "123";

var res = data + num; // returns عينات123

我试图将数字连接到阿拉伯文本的右侧,但它跳到左侧,也尝试反转字符串,但没有帮助。

请在 Javascript 中提出解决方案。

提前致谢!

你可以利用Directional_Formatting_Codes:

  • LRE U+202A 从左到右嵌入 将以下文本视为从左到右嵌入。
  • PDF U+202C POP 方向格式结束最后一个 LRE、RLE、RLO 或 LRO 的范围。

var data = "عينات";
var num = "123";
var res = "\u202A" + data + "\u202C" + num
console.log(res);

另一个答案建议在文本中添加控制字符,但正如有人评论的那样,这种方法有缺点。

无论字符串的顺序如何,您都将数字放在左边的原因是因为您使用的是 LTR 元素(或始终为 LTR 的浏览器控制台)。然后,如果数字在前,则它们从左侧开始,如果阿拉伯字母在前,则它们从右侧开始,因为阿拉伯字母即使在 LTR 元素内也具有“硬”RTL 方向。

但是,如果您使用的是 RTL 元素并将数字放在前面,它将按预期显示:

<div dir="rtl">123عينات</div>

或动态使用 JavaScript:

var data = "عينات";
var num = "123";
var res = num + data;

var el = document.createElement('div');
el.dir = "rtl";
el.textContent = res;
document.body.append(el);