2016-04-02 2 views
1

Ich mag concat:wie persische Zeichen mit englischen Zeichen in richtiger Reihenfolge in Javascript concat?

"2334", "234", "محمد"

, um die "2334" die erste sein, und "محمد" ist die zweite und "234" in der dritte Platz

Wie kann ich das in Javascript tun? danke.

+2

was ist die Logik hinter der zweiten Stelle persisch Zeichen setzen? – gurvinder372

+0

* concat persische Zeichen mit englischen Zeichen * - War das der Schah von Iran? –

+0

Ich habe keine Logik verwendet, nur mit + Operator –

Antwort

1

Versuchen Sie, diese

function wrap(str) { 
 
    return '\u202B' + str + '\u202C'; 
 
} 
 

 
var arr = ["2334" , "234", "محمد"]; 
 
var output = arr[0] + wrap(arr[2]) + arr[1]; 
 
document.body.innerHTML += output;

+0

funktioniert nicht auf meinem FF, funktioniert aber auf meinem Chrom (osX 10.9 als Englisch eingestellt) – Kaiido

1

Wenn Sie es in einer HTML-Seite nur ausgeben wollen und bekommen es in dieser Reihenfolge angezeigt, einfach alle Streicher in Spannweiten wickeln und einen display:inline-block hinzufügen Regelung über die Spannweiten:

var arr = ["2334" , "234", "محمد"]; 
 
document.body.innerHTML = '<span>'+arr[0]+'</span><span>'+arr[2]+'</span><span>'+arr[1]+'</span>';
body>span{ display: inline-block; }

+0

Funktioniert gut für ich auch. – trincot

+0

Ja, da jetzt alle Elemente getrennt sind, kümmert sich der Browser nicht mehr um das 'dir '. – Kaiido

2

Eine Möglichkeit, diese Arbeit zu machen ist es, diese verschiedenen Teile in Tags wickeln, wie ein span und zeigt die Richtung mit dem dir Attribute (alternativ könnte es mit CSS gemacht werden):

var arr = ["2334" , "234", "محمد"]; 
 
var output = '<span dir="auto">' + arr[0] + '</span>' + 
 
      '<span dir="auto">' + arr[2] + '</span>' + 
 
      '<span dir="auto">' + arr[1] + '</span>'; 
 

 
document.body.innerHTML = output;

+0

'auto' funktioniert, aber' ltr, rtl, ltr' gibt '234xxx2334' aus anstelle von' 2334xxx234' für mich – Kaiido

+0

Danke, dass du @Kaiido darauf hingewiesen hast. – trincot

+0

Ich sah, dass Sie auch bemerkt haben, dass "dir" auf jeder Spannweite eingestellt werden muss ;-) – Kaiido

1

für diesen Zweck können Sie Unicode verwenden. Ich hoffe, es wird Ihnen und traurig helfen, wenn ich etwas falsch

var str = '123' + '\u06a6\u069e\u0681' + '456'; 
 
document.querySelector('.result').innerHTML = str;
.result { 
 
    unicode-bidi: bidi-override; 
 
    direction: ltr; 
 
}
<p class="result"></p>
schrieb

+0

Es sieht so aus, als ob das fremde Wort seine Buchstaben in die falsche Richtung hat. – trincot

+0

haha ​​du hast recht so ein witziges verhalten –

Verwandte Themen