9
votes

String.format ne convertit pas les entiers correctement en arabe

J'ai un problème avec String.Format. Le code suivant formate la chaîne correctement en dehors du premier entier. La culture actuelle est définie sur l'arabe irakien (AR-IQ): xxx

Le texte est formaté à gauche et que le 2 est converti en chiffre arabe, mais le 1 n'est pas.

des idées?


0 commentaires

3 Réponses :


3
votes

Le comportement par défaut pour la conversion des valeurs numériques est "Contexte", qui signifie essentiellement si un numéro est passé par arabe, ils affichent en arabe (ou un autre caractère "non latin"), s'ils ne sont pas alors affichés dans " Standard "NUMÉROS EUROPÉENS.

Vous pouvez modifier ce comportement assez facilement cependant: P>

var culture = CultureInfo.CurrentCulture;
culture.NumberFormat.DigitSubstitution = DigitShapes.NativeNational; // Always use native characters
string formatted = string.Format(culture, "{0:d}{1:d}{2:d}", currentItem, of, count);


3 commentaires

Frais! Cela fixe également la mise en forme de tispan, c'est-à-dire {0: mm \: SS} en arabe pour une raison quelconque. Avec substitution du chiffre, une erreur de formatage se produit.


Il a été indiqué sur MSDN que digitsubstitution n'a aucun effet n'est réservé à une utilisation future: msdn.microsoft.com/en-us/library/... . Comment cette solution fonctionne-t-elle même?


Ce code échoue avec "InvalidOperationException: l'instance est en lecture seule." Sauf si votre code définit courrielculture pour être non-lecture uniquement (comme ... couranteThread.CurrentCulture = nouveau cultureInfo ("fr-fr") ) et comme @SAAC a souligné Même après avoir obtenu votre code pour exécuter digitsubstitution n'a aucun effet sur le résultat ... L'échantillon de travail pourrait être utile, c'est-à-dire www.ideone.com ...



0
votes
var culture = new CultureInfo("ar-SA");
culture.NumberFormat = new NumberFormatInfo();
Thread.CurrentThread.CurrentCulture = culture;

0 commentaires

1
votes

Je n'ai pas pu obtenir l'une des autres réponses au travail. Cela a fonctionné pour moi: xxx


0 commentaires