如何使用混合的阿拉伯语和英语字符串正确放置数字

时间:2016-01-20 15:09:08

标签: javascript arabic

我正在处理一个JavaScript代码,该代码显示带有混合阿拉伯语,数字和英语单词的字符串。代码用一个数字替换子串“##”,如下所示,

" بون شاسع ##mi".replace("##",123)

我希望结果是(数字“123”正好在“mi”之前和阿拉伯字符之后):

بونشاسعenter image description here

但是,我总是得到以下结果(数字“123”意外地放在阿拉伯字符之前),
enter image description here

那么,有人能告诉我如何获得这个理想的结果吗?

1 个答案:

答案 0 :(得分:2)

由于文本是阿拉伯语,因此它使用从右到左的方向。但是,当您将数字与要从左到右显示的数字混合时,事情会变得棘手。

这可以使用\u200E来修复,.replace表示从左到右标记字符。它是一个不可见的字符,它向文本渲染器指示应该在该方向上呈现以下内容,而不管正常规则建议的是什么。

您可以在"بون شاسع##mi".replace("##","\u200E"+123) 调用中添加标记,如下所示:

.concat

这里是控制台输出的比较,没有和没有标记:

Console test