Странное поведение при использовании замены в арабской строке - PullRequest
0 голосов
/ 20 декабря 2018

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

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

я получаю

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

back: (

Любая помощь будетвысоко ценится! Спасибо:)

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 голосов
/ 21 декабря 2018

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

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

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

...