Странное поведение при использовании замены в арабской строке

Я пытаюсь понять, почему в этом фрагменте, для данной строки

عروض تبدأ من $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 ответ

Решение

Возможно, вы расстроены тем, что знак $ идет справа от числа. Не отчаивайтесь: если вы выполните поиск в Интернете, вы найдете много респектабельных сайтов на арабском языке, где относительные позиции $ и западных цифр совпадают или даже смешаны. $123 а также 123$ на той же странице.

Что касается порядка токенов, результат абсолютно верный, читатели будут ожидать, что цена будет слева от слов, потому что арабский язык - это язык RTL. Во многих странах они также ожидали увидеть цифры на хиндике, но, возможно, не с привязкой к доллару США.

Положение знака доллара относительно цифр зависит от направленности пролета. То есть если вы заверните свою строку в <span dir="rtl">будет выглядеть иначе <span dir="ltr">, Вы можете попытаться вернуться '$5821' а также '5821$' и найти, какой из них выглядит лучше для вас.

Другие вопросы по тегам