Странное поведение при использовании замены в арабской строке
Я пытаюсь понять, почему в этом фрагменте, для данной строки
عروض تبدأ من $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$'
и найти, какой из них выглядит лучше для вас.