Kev*_*ock 20 c# formatting localization cultureinfo
我想将数值转换为字符串,显示特定于文化的数字.例如,阿富汗使用的Dari语言(文化名称"prs-AF")使用东方阿拉伯数字而不是大多数西方文化中使用的阿拉伯数字(0,1,2,3,4,5,6,7,8,9).
在检查Framework内置的CultureInfo类时,它会列出正确的本机数字(从LinqPad的输出中截取):

CultureInfo.CreateSpecificCulture("prs-AF").NumberFormat.NativeDigits
Run Code Online (Sandbox Code Playgroud)
但是,当尝试将数字转换为字符串以在该文化中显示时,我没有获得原始数字:

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);
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何显示原生数字?
Mår*_*röm 14
当您显示包含数字的文本时,会发生数字替换.
正如您所见,它不应该更改数字的字符串表示形式.
无论数字替换,数字都123.5被格式化为字符串123.5.但是,如果相应地设置并且演示引擎支持数字替换,则显示适当的字形Thread.CurrentThread.CurrentCulture.(WPF支持它)