2017-09-14 2 views
1

Ich erhalte zwei Strings von einem Serverschreiben RTL String auf einem UILabel

firstString = "JHKJ" 
secondSctring = "ذيس إز اى تست" 

On LTR-Modus, möchte ich das Label JHKJ: ذيس إز اى تست und auf RTL drucken Ich erwarte, dass es ذيس إز اى تست : JHKJ

Wenn ich normal drucken die Saiten verketten

let finalString = firstString + ":" + secondSctring 

Das Etikett zeigt das gleiche Ergebnis sowohl auf RTL und LTR:

JHKJ: ذيس إز اى تست 

Und selbst wenn ich ändern die Verkettung Reihenfolge

if rtl{ 
finalString = secondSctring + ":" + firstString 
}else{ 
finalString = firstString + ":" + secondSctring 
} 

myLabelView.text = finalString

das Ergebnis immer noch das gleiche:

JHKJ: ذيس إز اى تست 

Ich habe auch versucht th Etikett zu zwingen, benutze nur den LTR-Modus, es hat nicht geholfen. Ich habe auch versucht, zwei attributierte Strings zu verwenden und sie in einem dritten anzuhängen, es hat auch nicht funktioniert. Haben Sie eine Idee, wie Sie das lösen können, ohne zwei Etiketten zu verwenden?

+0

Könnten Sie ein Snippet Ihres Codes senden? Haben Sie mit folgender Syntax versucht: 'print (" \ (firstString): \ (secondSctring) ")'? –

+0

Ich drucke den Text nicht, ich füge ihn zu einem lableView hinzu – Mbf

Antwort

1

Vor einiger Zeit traf ich auf gleiches Problem und ich schaffte es mit

Das 0x200E Unicode-Zeichen ist unsichtbar, aber setzt die Wiedergabe zu tun, um wieder in dem von links nach rechts Modus.

Nach dem oben, das ist die Ausgabe, die ich bekomme:

let firstString = "JHKJ" 
let secondSctring = "ذيس إز اى تست" 

let finalString = firstString + ":" + secondSctring 

var result1: String = "\u{200E}\(secondSctring) : \(firstString)" 
var result2: String = "\u{200E}\(firstString) : \(secondSctring)" 

result1 ذيس إز اى تست: JHKJ

result2 JHKJ: ذيس إز Weitere Informationen

Hoffe, es ist hilfreich für Sie