How to Convert Persian Digits in variable to English Digits Using Culture?
Simply Use the code below :
private string changePersianNumbersToEnglish(string input)
{
string[] persian = new string[10] { "۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹" };
for (int j=0; j<persian.Length; j++)
input = input.Replace(persian[j], j.ToString());
return input;
}
I suggest two approaches to handle this issue(I Create an extension method for each of them):
1.foreach and replace
public static class MyExtensions
{
public static string PersianToEnglish(this string persianStr)
{
Dictionary<char, char> LettersDictionary = new Dictionary<char, char>
{
['۰'] = '0',['۱'] = '1',['۲'] = '2',['۳'] = '3',['۴'] = '4',['۵'] = '5',['۶'] = '6',['۷'] = '7',['۸'] = '8',['۹'] = '9'
};
foreach (var item in persianStr)
{
persianStr = persianStr.Replace(item, LettersDictionary[item]);
}
return persianStr;
}
}
2.Dictionary.Aggregate
public static class MyExtensions
{
public static string PersianToEnglish(this string persianStr)
{
Dictionary<string, string> LettersDictionary = new Dictionary<string, string>
{
["۰"] = "0",["۱"] = "1",["۲"] = "2",["۳"] = "3",["۴"] = "4",["۵"] = "5",["۶"] = "6",["۷"] = "7",["۸"] = "8",["۹"] = "9"
};
return LettersDictionary.Aggregate(persianStr, (current, item) =>
current.Replace(item.Key, item.Value));
}
}
More info about Dictionary.Aggregate: Microsoft
Usage:
string result = "۱۰۳۶۷۵۱".PersianToEnglish();