强制.NET使用本地波斯数字而不是美国格式。

4

我曾尝试设置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 ٠١٢٣٤٥٦٧٨٩

我有漏掉的代码部分吗?

如果您查看DigitSubstitution属性的文档,您会发现它尚未被使用:DigitSubstitution属性保留供将来使用。目前,在当前NumberFormatInfo对象的解析或格式化操作中都没有使用它。 - Martin Liversage
1个回答

3

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

您需要自己输出数字。您可以先使用内置代码格式化数字(以获取正确的分组/小数分隔符/货币),然后使用String.Replace替换0-9为国际数字,或者将数字映射到您需要的字符并使用String.Join连接它们。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接