在阿拉伯字符串上使用替换时的怪异行为

时间:2018-12-20 14:19:36

标签: javascript html right-to-left bidi left-to-right

我试图了解为什么在此代码段中,对于给定的字符串

عروض تبدأ من $minprice

我知道

عروض تبدأ من $5821

返回:(

任何帮助将不胜感激!谢谢:)

var regExp = new RegExp(/\$minprice/, 'ig');
var string = "عروض تبدأ من $minprice";

console.group();
console.log(
  "new string",
  string.replace(regExp, (matched, offset, originalString) => {
    console.log('originalString', originalString);
    return '$5821';
  })
);
console.groupEnd();

1 个答案:

答案 0 :(得分:2)

可能您不高兴 $ 符号位于数字的右侧。不要失望:如果您进行网络搜索,您会发现许多阿拉伯语值得信赖的网站,其中 $ 和西数的相对位置是这种方式,甚至是$123123$在同一页面上。

对于令牌的顺序,结果是绝对正确的,读者会期望价格在单词的左侧,因为阿拉伯语是RTL语言。在许多国家/地区,他们也希望看到Hindic数字,但可能没有附带美元兑美元。

美元符号相对于数字的位置取决于跨度的方向性。即如果将字符串包装在<span dir="rtl">中,它将看起来与<span dir="ltr">不同。您可以尝试返回'$5821''5821$'并找出最适合您的一个。