c# - 如何显示特定于文化的本地数字而不是阿拉伯数字?

标签 c# localization formatting cultureinfo

我想将数值转换为字符串,显示特定于文化的数字。例如,阿富汗使用的达里语(文化名称“prs-AF”)使用 Eastern-Arabic numerals而不是 Arabic numerals在大多数西方文化中使用(0,1,2,3,4,5,6,7,8,9)。

在检查框架中内置的 CultureInfo 类时,它会列出正确的 native 数字(截取自 LinqPad 中的输出):

linqpad output

CultureInfo.CreateSpecificCulture("prs-AF").NumberFormat.NativeDigits

但是,当尝试将数字转换为字符串以在该文化中显示时,我没有得到本地数字:

linqpad output

var number = 123.5;
var culture = CultureInfo.CreateSpecificCulture("prs-AF");
Thread.CurrentThread.CurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
var text = number.ToString(culture);
Console.WriteLine(text);

谁能告诉我如何显示本地数字?

最佳答案

数字替换是在您显示包含数字的文本时发生的事情。

正如你所见,它不应该改变数字的字符串表示。

数字 123.5 被格式化为字符串 123.5 无论数字替换。但是,如果 Thread.CurrentThread.CurrentCulture 被相应地设置并且演示引擎支持数字替换,则它会以适当的字形显示。 (WPF 确实支持)

关于c# - 如何显示特定于文化的本地数字而不是阿拉伯数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6239729/

相关文章:

c# - Windows Phone 8 中具有多个 ItemTemplates 的列表框

android - 在android中设置基于区域的本地

c# - 如何避免 ImageList 本地化

PHP Intl 库和人类可读的时间跨度

objective-c - 使 float 只显示两位小数

c# - 如何将字符串类型的 ObservableCollection 绑定(bind)到 Datagrid

c# - 带 cookie 的重定向 WebRequest 不起作用(Windows 内部版本 15063)

android - 将 EditText 电话号码格式化为用户类型

c# - 如何编写重定向 Facebook 应用程序的自定义 MVC ActionFilterAttribute

c# - 一次格式化 Visual Studio 项目中的所有文件