Je développe du code pour présenter des symboles monétaires dans le cadre d'une étiquette sur mon application, et j'ai une liste de référence de symboles monétaires au format hexadécimal Unicode. Dans mon code, je suis mise en forme de la monnaie comme suit:Placement de symboles de devise dans les chaînes .NET
(symbole monétaire) (chaîne décimale) (description de la monnaie)
Cette approche fonctionne très bien pour la plupart des symboles, mais je remarque que certains des symboles sont automatiquement décalé vers la droite de la valeur décimale même si explicitement placé à gauche. En utilisant le débogueur, je vois ce comportement même au niveau le plus fondamental dans les chaînes elles-mêmes, donc ce n'est pas un cas de manipulation à des niveaux plus élevés par le rendu dans la couche de présentation. Le code suivant présente le cas simple montrant le problème:
string rialSymbol = "\ufdfc";
string amount = "123.45";
string description = "Rials";
string plainConcat = rialSymbol + " " + amount + " " + description;
Debug.WriteLine(plainConcat);
La sortie de débogage (qui correspond également à ce qui est vu dans l'interface utilisateur de l'application) est comme suit:
123,45 (symbole rial) rials
(Note: le symbole est à la droite de la décimale, pas la gauche, comme spécifié)
J'ai essayé plusieurs approches et variétés de mise en forme de chaînes, mise en forme de culture, etc., mais rien ne semble résoudre ce problème. Comment puis-je appliquer le placement du caractère Unicode sans que le cadre ne décide du positionnement du symbole par rapport à la valeur décimale? Cela fonctionne avec la plupart des autres personnages, pourquoi le Rial (et quelques autres) provoque ce type de comportement de chaîne fondamentale?
Merci beaucoup! Exactement ce dont j'avais besoin. – DMG
+1 Wow, d'où cela vient-il ?! Incroyable ... – Aliostad
J'ai trouvé les détails de l'algorithme BiDi ici: http://www.unicode.org/reports/tr9/ – DMG