Introduction
In this blog, I have described how to convert words to numeric values.
For example:
Input = Three Thousand Five Hundred Sixty Two
Output = 3562
The function is named "ConvertToNumbers" and accepts a parameter of type string and returns a number value containing the words in number.
  1. class WordsToNumbers
  2. {
  3. private static Dictionary<string, long> numberTable = new Dictionary<string, long>{
  4. {"zero",0},{"one",1},{"two",2},{"three",3},{"four",4},{"five",5},{"six",6},
  5. {"seven",7},{"eight",8},{"nine",9},{"ten",10},{"eleven",11},{"twelve",12},
  6. {"thirteen",13},{"fourteen",14},{"fifteen",15},{"sixteen",16},{"seventeen",17},
  7. {"eighteen",18},{"nineteen",19},{"twenty",20},{"thirty",30},{"forty",40},
  8. {"fifty",50},{"sixty",60},{"seventy",70},{"eighty",80},{"ninety",90},
  9. {"hundred",100},{"thousand",1000},{"lakh",100000},{"million",1000000},
  10. {"billion",1000000000},{"trillion",1000000000000},{"quadrillion",1000000000000000},
  11. {"quintillion",1000000000000000000}
  12. };
  13. public static long ConvertToNumbers(string numberString)
  14. {
  15. var numbers = Regex.Matches(numberString, @"\w+").Cast<Match>()
  16. .Select(m => m.Value.ToLowerInvariant())
  17. .Where(v => numberTable.ContainsKey(v))
  18. .Select(v => numberTable[v]);
  19. long acc = 0, total = 0L;
  20. foreach (var n in numbers)
  21. {
  22. if (n >= 1000)
  23. {
  24. total += acc * n;
  25. acc = 0;
  26. }
  27. else if (n >= 100)
  28. {
  29. acc *= n;
  30. }
  31. else acc += n;
  32. }
  33. return (total + acc) * (numberString.StartsWith("minus",
  34. StringComparison.InvariantCultureIgnoreCase) ? -1 : 1);
  35. }
  36. }
Now, call the ConvertToNumbers method.
  1. static void Main(string[] args)
  2. {
  3. try
  4. {
  5. string strNumber = "Three Thsound Five Hundred Sixty Two";
  6. string rtnNumber = ConvertToNumbers(strNumber);
  7. Console.WriteLine("Number is {0}", rtnNumber);
  8. Console.ReadKey();
  9. }
  10. catch (Exception ex)
  11. {
  12. Console.WriteLine(ex.Message);
  13. }
  14. }
I hope this is useful for all readers. Happy Coding!