强制.NET编写本机波斯数字,而不是US格式

本文关键字:格式 US 数字 NET 本机 强制 | 更新日期: 2023-09-27 17:58:42

我尝试设置ASP.NET应用程序的Culture和UICulture,但没有成功。也在C#Windows应用程序中尝试过。

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

代码中有我遗漏的部分吗?

强制.NET编写本机波斯数字,而不是US格式

C#/.Net框架不支持输出0-9以外的数字(也不支持解析)。

您需要自己输出数字。您应该能够首先使用内置代码格式化数字(以获得正确的分组/十进制分隔符/货币),然后使用String.Replace将0-9替换为国家数字,或者将数字映射到所需的字符并使用String.Join将其连接。

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