Concat RTL string with LTR string in javascript

时间秒杀一切 提交于 2019-11-30 07:53:33

问题


I'm facing trouble in concatenating Arabic string with English string but their order is being messed!

I tried + operator and str1.concat(..) but nothing works for me.

var a = 'english'
var b = 'أ.ب-000082-13'
var c = '000004-ر خ-2014.xml'

//var myCoolString =a + '\\' + b + '\\' + c;

var myCoolString =a.concat("\\",b,"\\",c) 

document.getElementsByTagName('output')[0].innerHTML = myCoolString;

The result was like this: english\أ.ب-000082-13\000004-ر خ-2014.xml


回答1:


The characters your are looking for are \u202A, \u202B and \u202C

function wrap_dir(dir, str) {
    if (dir === 'rtl') return '\u202B' + str + '\u202C';
    return '\u202A' + str + '\u202C';
}


wrap_dir('ltr', a) + wrap_dir('ltr', '\\') + wrap_dir('rtl', b) + wrap_dir('ltr', '\\') + wrap_dir('ltr', c);
// "‪english‬‪\‬‫أ.ب-000082-13‬‪\‬‪000004-ر خ-2014.xml‬"

Not sure why c wanted to be LTR, maybe because it ends .xml?



来源:https://stackoverflow.com/questions/29988144/concat-rtl-string-with-ltr-string-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!