2013-02-12 10 views
5

Próbowałem ustawić Kulturę i UICulture aplikacji ASP.NET bez powodzenia. Próbowałem również w C# aplikacji Windows.Wymuszenie .NET w celu napisania natywnej numeracji perskiej zamiast formatu US.

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 ٠١٢٣٤٥٦٧٨٩ 

Czy w kodzie brakuje jakiejś części?

+0

Jeśli spojrzeć na dokumentacji dotyczącej [ 'DigitSubstitution'] (http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.digitsubstitution.aspx) nieruchomości widać że nie jest jeszcze używany (jeszcze): _ Właściwość DigitSubstitution jest zarezerwowana do przyszłego użytku. Obecnie nie jest on używany ani do analizowania ani do formatowania bieżącego obiektu NumberFormatInfo. –

+0

Powiązane: [Czy mogę zmienić angielskie liczby na arabskie/perskie reprezentacje podczas renderowania formantu?] (Http://stackoverflow.com/ pytania/10069826/can-i-change-english-numbers-to-arabic-persian-representations-when-a-control-is) oraz [Zmień angielskie numery na perski i odwrotnie w MVC (httpmodule)?] (http: //stackoverflow.com/questions/13709718/change-english-numbers-to-persian-and-vice-versa-in-mvc-httpmodule) – sloth

Odpowiedz

3

Brak wsparcia w strukturze C#/.Net do wyprowadzania liczb z cyframi innymi niż 0-9 (ani obsługą parsowania).

Musisz samodzielnie wyprowadzać cyfry. Powinieneś być w stanie sformatować numery najpierw za pomocą wbudowanego kodu (aby uzyskać poprawne grupowanie/dziesiętny separtor/walutę) i zastąpić cyfry 0-9 cyframi narodowymi za pomocą String.Replace lub odwzorować cyfry na potrzebne znaki i połączyć je z String.Join.

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

Dziękuję. Oznaczone jako odpowiedź –

Powiązane problemy