Reputation: 63
var data = "عينات";
var num = "123";
var res = data + num; // returns عينات123
I am trying to concatenate numbers to the right side of the arabic text, but its jumping to the left side, also tried reversing the string, but didn't help.
Please suggest a solution in Javascript.
Thanks in Advance!
Upvotes: 2
Views: 1120
Reputation: 1624
Another answer suggested adding control characters into the text, but as someone commented this approach has it's downsides.
The reason you get the digits to the left no matter the order of the string is because you are using an LTR element (or the browser's console which is always LTR). Then if the digits come first they start at the left, and if the arabic letters come first they start at the right because arabic letters have "hard" RTL directionning even inside an LTR element.
However, if you are using an RTL element and put the digits first, it will show up as intended:
<div dir="rtl">123عينات</div>
Or dynamically with JavaScript:
var data = "عينات";
var num = "123";
var res = num + data;
var el = document.createElement('div');
el.dir = "rtl";
el.textContent = res;
document.body.append(el);
Upvotes: 0
Reputation: 163632
You can make use of Directional_Formatting_Codes:
var data = "عينات";
var num = "123";
var res = "\u202A" + data + "\u202C" + num
console.log(res);
Upvotes: 4