gpt4 book ai didi

c# - 如何强制我的 C# Windows 窗体使用阿拉伯数字?

转载 作者:行者123 更新时间:2023-11-30 21:33:02 25 4
gpt4 key购买 nike

我试图强制我的表格使用阿拉伯语格式,例如将 (1-2-3-4-..,etc) 数字显示为 (٠ , ١ , ٢ , ٣ , ٤ , ٥ , ٦ , ٧ , ٨ , ٩ ) 在我的所有表单中,无论它是 Textbox 还是 labels 或者其他什么

我搜索并发现了很多关于这个问题的问题,其中大部分都不起作用,而我认为其他问题似乎不是很好的答案,例如 accepted answer here如下所示,我在表单加载上尝试过的内容对我的问题没有影响

这是一个 accepted answer那就是说 cultureinfo 不会有帮助,对吗??因为我认为这个答案不对

如果有人可以帮助我,请帮助我

private void F0102_Load(object sender, EventArgs e)
{
CultureInfo ar_culture = new CultureInfo("ar-SA");
Thread.CurrentThread.CurrentCulture = ar_culture;
Thread.CurrentThread.CurrentUICulture = ar_culture;
}

最佳答案

大多数阿拉伯人使用西方阿拉伯数字(1、2、3...)进行数学运算。因此,即使使用 ar-SA 文化,您在格式化数字时也会得到这些。使用您自己的格式化函数获取东方阿拉伯数字。

public static string ToArabic(long num)
{
const string _arabicDigits = "۰۱۲۳۴۵۶۷۸۹";
return new string(num.ToString().Select(c => _arabicDigits[c - '0']).ToArray());
}

您还可以创建自己的格式提供程序:

public class ArabicNumberFormatProvider : IFormatProvider, ICustomFormatter
{
public static readonly ArabicNumberFormatProvider Instance =
new ArabicNumberFormatProvider();

private ArabicNumberFormatProvider() { }

public object GetFormat(Type formatType) { return this; }

public string Format(string format, object arg, IFormatProvider formatProvider)
{
switch (arg) {
case long l:
return ToArabic(l);
case int i:
return ToArabic(i);
default:
return null;
}
}

public static string ToArabic(long num)
{
const string _arabicDigits = "۰۱۲۳۴۵۶۷۸۹";
return new string(num.ToString().Select(c => _arabicDigits[c - '0']).ToArray());
}
}

例子:

string arabic = String.Format(ArabicNumberFormatProvider.Instance,"{0}", 1234567890);

输出:

۱۲۳۴۵۶۷۸۹۰

但是,num.ToString(ArabicNumberFormatProvider.Instance) 不起作用。有关详细信息,请参阅 https://stackoverflow.com/a/6240052/880990

关于c# - 如何强制我的 C# Windows 窗体使用阿拉伯数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51802254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com