2013-02-12 6 views
5

Ho tentato di impostare Culture e UICulture dell'applicazione ASP.NET senza esito positivo. Anche provato nell'applicazione Windows C#.Forza .NET per scrivere numeri persiani nativi invece del formato USA

System.Globalization.CultureInfo a = new System.Globalization.CultureInfo("fa-IR"); 
a.NumberFormat.DigitSubstitution = System.Globalization.DigitShapes.NativeNational; 
string Q = string.Format(a, "{0}", 1234567890); // Output 1234567890 instead of ٠١٢٣٤٥٦٧٨٩ 

C'è qualche parte che mi è mancata nel codice?

+0

Se si guarda la documentazione per la proprietà [ 'DigitSubstitution'] (http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.digitsubstitution.aspx) è possibile vedere che non è usato (ancora): _La proprietà DigitSubstitution è riservata per uso futuro. Al momento, non viene utilizzato nelle operazioni di analisi o formattazione per l'oggetto NumberFormatInfo corrente._ –

+0

Correlati: [Posso modificare i numeri inglesi in rappresentazioni arabe/persiane quando viene eseguito il rendering di un controllo?] (Http://stackoverflow.com/ domande/10069826/can-i-change-inglese-numeri-per-arabo-persiano-rappresentazioni-quando-un-controllo-è) e [Modificare i numeri inglesi in persiano e viceversa in MVC (httpmodule)?] (http: //stackoverflow.com/questions/13709718/change-english-numbers-to-persian-and-vice-versa-in-mvc-httpmodule) – sloth

risposta

3

Non c'è supporto in C#/.Net framework per emettere numeri con cifre diverse da 0-9 (né supporto di parsing).

È necessario emettere cifre da soli. Dovresti essere in grado di formattare i numeri prima usando il codice incorporato (per ottenere il corretto raggruppamento/decimale separtor/valuta) e sostituire 0-9 con cifre nazionali usando String.Replace o cifre della mappa per i caratteri che ti servono e unisciti a loro con String.Join.

var converted = String.Join("", 123490.ToString().Select(c => "٠١٢٣٤٥٦٧٨٩"[c-'0'])); 
+0

Grazie. Contrassegnato come risposta –