C# 使用c中的字典和linq将英语数字替换为阿拉伯语数字时出错#

C# 使用c中的字典和linq将英语数字替换为阿拉伯语数字时出错#,c#,linq,dictionary,C#,Linq,Dictionary,我已经编写了一个函数,使用字典和linq将任何给定字符串中的英语数字替换为阿拉伯语数字。但该功能并没有完全替代。例如,如果英语数字是12345,阿拉伯语数字是12534或53214。有什么问题吗 我的职责如下: private Dictionary<string, string> NumbersInArabic() { Dictionary<string, string> dictionary = new Dictionary<string, string&

我已经编写了一个函数,使用字典和linq将任何给定字符串中的英语数字替换为阿拉伯语数字。但该功能并没有完全替代。例如,如果英语数字是12345,阿拉伯语数字是12534或53214。有什么问题吗

我的职责如下:

private Dictionary<string, string> NumbersInArabic()
{
    Dictionary<string, string> dictionary = new Dictionary<string, string>();

    dictionary.Add("0", "٠");
    dictionary.Add("1", "١");
    dictionary.Add("2", "٢");
    dictionary.Add("3", "٣");
    dictionary.Add("4", "٤");
    dictionary.Add("5", "٥");
    dictionary.Add("6", "٦");
    dictionary.Add("7", "٧");
    dictionary.Add("8", "٨");
    dictionary.Add("9", "٩");

    return dictionary;
}

private string ReplaceNumberTextToArabic(string text)
{
    var newstr = NumbersInArabic().Aggregate(text, (current, value) => current.Replace(value.Key, value.Value));
    return newstr.ToString();
}
private Dictionary NumbersInArabic()
{
字典=新字典();
字典。加上(“0”、“٠”);
字典。加上(“1”、“١”);
词典.添加(“2”、“٢”);
字典。加上(“3”、“٣”);
字典。加上(“4”、“٤”);
字典。加上(“5”、“٥”);
字典。加上(“6”,“٦”);
字典。加上(“7”,“٧”);
字典。加上(“8”,“٨”);
字典。加上(“9”、“٩”);
返回字典;
}
私有字符串ReplaceNumberTextToArabic(字符串文本)
{
var newstr=NumbersInArabic().Aggregate(text,(current,value)=>current.Replace(value.Key,value.value));
return newstr.ToString();
}

我已经编写了您的方法,并且在我这边工作得很好


我想你的问题出在别的地方。

你确定这不仅仅是你的字典的问题吗?如果你能把它改成用英文字母代替数字,我们这些不懂阿拉伯数字的人就会很容易发现问题。你在用哪个操作系统?它在Windows7中运行良好,而在WindowsXP中则不行。为什么?我将它用作ReplaceNumberTextToArabic(string.Format(“{0:dd-MMMM-yyyy}”,Convert.ToDateTime(lblRequestdate.Text));我还按如下方式使用它,ReplaceNumberTextToArabic(string.Format(“{0:N}”,txtSalary12.Text)),它正在正确地替换,但阿拉伯字母应该是从右到左。怎么做?