2013-02-12 53 views
5

我試圖設置ASP.NET應用程序的Culture和UICulture,但沒有成功。 也在C#Windows應用程序中嘗試過。強制.NET編寫原生波斯數字而不是美國格式

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

有沒有我在代碼中遺漏的任何部分?

+0

如果你看一下在['DigitSubstitution'(http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.digitsubstitution.aspx)屬性的文檔,你可以看到(尚未使用):_ DigitSubstitution屬性保留供將來使用。目前,它不用於當前NumberFormatInfo對象的解析或格式化操作。[ – 2013-02-12 07:47:29

+0

相關:[可以在呈現控件時將英文數字更改爲阿拉伯語/波斯語表示形式嗎?](http://stackoverflow.com/問題/ 10069826/can-i-change-english-numbers-to-arabic-persian-representations-when-a-control-is)and [在MVC(httpmodule)中將英文數字改爲波斯語,反之亦然?](http: //www.stackoverflow.com/questions/13709718/change-english-numbers-to-persian-and-vice-versa-in-mvc-httpmodule) – sloth 2013-02-12 08:18:59

回答

3

在C#/ .Net框架中不支持用0-9以外的數字輸出數字(也不支持解析)。

您需要自己輸出數字。您應該能夠首先使用內置代碼格式化數字(以獲得正確的分組/小數位數/貨幣),然後使用String.Replace或將地圖數字替換爲您需要的字符並將它們與String.Join合併,從而將全國數字替換爲0-9。

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

謝謝。標記爲答案 – 2013-02-12 09:01:33

相關問題