在渲染控件时,我可以将英文数字更改为阿拉伯语/波斯语表示吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

英语数字(12345678)和一些其他符号如十进制在波斯语(1234567890)或(3/1而不是3.1)中是不同的。我希望语言在我的控件中是可选的。

例如,当我将TextBlock的TextProperty设置为“2345”时,我希望它同时显示为“2345”和“2345”。

我可以在渲染控件时更改特定字体吗?我的意思是我覆盖渲染或其他一些方法,例如添加:

if (char=='5')
{
    char='۵';
}

或者还有其他方法吗?谢谢;

提问于
用户回答回答于

这里我的代码通过扩展方法将英文数字转换为波斯数字:

 private static readonly string[] pn = { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" };
    private static readonly string[] en = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };

public static string ToPersianNumber(this string strNum)
    {
        string chash = strNum;
        for (int i = 0; i < 10; i++)
            chash = chash.Replace(en[i], pn[i]);
        return chash;
    }
    public static string ToPersianNumber(this int intNum)
    {
        string chash = intNum.ToString();
        for (int i = 0; i < 10; i++)
            chash = chash.Replace(en[i], pn[i]);
        return chash;
    }
用户回答回答于

我使用一个简单的代码,我写道:

private string toPersianNumber(string input)
{
   string[] persian = new string[10] { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" };

   for (int j=0; j<persian.Length; j++)
       input = input.Replace(j.ToString(), persian[j]);

     return input;
}

扫码关注云+社区

领取腾讯云代金券