2015-05-01 5 views
0

Я столкнулся с проблемой при объединении арабской строки с английской строкой, но их порядок запутан!Строка Concat RTL со строкой LTR в javascript

Я попробовал + оператора и str1.concat(..), но ничего не работает для меня.

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; 

Результат был таким: английский \ أ.ب-000082-13 \ 000004-ر خ -2014 XML

+0

Может быть полезно: http://stackoverflow.com/questions/6177294/string-concatenation-containing-arabic-and-western-characters .. однако, являются ли ваши номера написанными LTR? вы можете обнаружить, что в каждой строке тоже меняется направление –

ответ

2

Символы вашего ищут являются \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‬" 

. Не знаете, почему c хотел быть LTR, может быть, потому что он заканчивается .xml?

Смежные вопросы