Example #1
0
 public static void ExpandNumess(string rawString, WordRelation wordRelation)
 {
     if (rawString.Length == 4)
     {
         Expand2DigitNumber(rawString.JSubString(0, 2), wordRelation);
         ExpandNumess(rawString.Substring(2), wordRelation);
     }
     else
     {
         wordRelation.AddWord(Digit2Numness[rawString[0] - '0']);
     }
 }
Example #2
0
 private static void Expand3DigitNumber(string numberString, WordRelation wordRelation)
 {
     if (numberString[0] == '0')
     {
         ExpandNumberAt(numberString, 1, wordRelation);
     }
     else
     {
         string hundredDigit = Digit2Num[numberString[0] - '0'];
         wordRelation.AddWord(hundredDigit);
         wordRelation.AddWord("hundred");
         ExpandNumberAt(numberString, 1, wordRelation);
     }
 }
Example #3
0
        public static void ExpandReal(string numberString, WordRelation wordRelation)
        {
            int stringLength = numberString.Length;
            int position;

            if (numberString[0] == '-')
            {
                // negative real numbers
                wordRelation.AddWord("minus");
                ExpandReal(numberString.JSubString(1, stringLength), wordRelation);
            }
            else if (numberString[0] == '+')
            {
                // prefixed with a '+'
                wordRelation.AddWord("plus");
                ExpandReal(numberString.JSubString(1, stringLength), wordRelation);
            }
            else if ((position = numberString.IndexOf('e')) != -1 ||
                     (position = numberString.IndexOf('E')) != -1)
            {
                // numbers with 'E' or 'e'
                ExpandReal(numberString.JSubString(0, position), wordRelation);
                wordRelation.AddWord("e");
                ExpandReal(numberString.Substring(position + 1), wordRelation);
            }
            else if ((position = numberString.IndexOf('.')) != -1)
            {
                // numbers with '.'
                string beforeDot = numberString.JSubString(0, position);
                if (beforeDot.Length > 0)
                {
                    ExpandReal(beforeDot, wordRelation);
                }
                wordRelation.AddWord("point");
                string afterDot = numberString.Substring(position + 1);
                if (afterDot.Length > 0)
                {
                    ExpandDigits(afterDot, wordRelation);
                }
            }
            else
            {
                // everything else
                ExpandNumber(numberString, wordRelation);
            }
        }
Example #4
0
        public static void ExpandDigits(string numberString, WordRelation wordRelation)
        {
            int numberDigits = numberString.Length;

            for (int i = 0; i < numberDigits; i++)
            {
                char digit = numberString[i];
                if (char.IsDigit(digit))
                {
                    wordRelation.AddWord(Digit2Num[numberString[i] - '0']);
                }
                else
                {
                    wordRelation.AddWord("umpty");
                }
            }
        }
Example #5
0
        public static void ExpandOrdinal(string rawNumberString, WordRelation wordRelation)
        {
            ExpandNumber(rawNumberString.Replace(",", ""), wordRelation);

            // get the last in the list of number strings
            Item lastItem = wordRelation.Tail;

            if (lastItem != null)
            {
                FeatureSet featureSet = lastItem.Features;
                string     lastNumber = featureSet.GetString("name");
                string     ordinal    = FindMatchInArray(lastNumber, Digit2Num, Ord2Num);

                if (ordinal == null)
                {
                    ordinal = FindMatchInArray(lastNumber, Digit2Teen, Ord2Teen);
                }
                if (ordinal == null)
                {
                    ordinal = FindMatchInArray(lastNumber, Digit2Enty, Ord2Enty);
                }

                if (lastNumber.Equals("hundred"))
                {
                    ordinal = "hundredth";
                }
                else if (lastNumber.Equals("thousand"))
                {
                    ordinal = "thousandth";
                }
                else if (lastNumber.Equals("billion"))
                {
                    ordinal = "billionth";
                }

                // if there was an ordinal, set the last element of the list
                // to that ordinal; otherwise, don't do anything
                if (ordinal != null)
                {
                    wordRelation.SetLastWord(ordinal);
                }
            }
        }
Example #6
0
        public static void ExpandId(string numberString, WordRelation wordRelation)
        {
            int numberDigits = numberString.Length;

            if ((numberDigits == 4) && (numberString[2] == '0') &&
                (numberString[3] == '0'))
            {
                if (numberString[1] == '0')
                { // e.g. 2000, 3000
                    ExpandNumber(numberString, wordRelation);
                }
                else
                {
                    ExpandNumber(numberString.JSubString(0, 2), wordRelation);
                    wordRelation.AddWord("hundred");
                }
            }
            else if ((numberDigits == 2) && (numberString[0] == '0'))
            {
                wordRelation.AddWord("oh");
                ExpandDigits(numberString.JSubString(1, 2), wordRelation);
            }
            else if ((numberDigits == 4 && numberString[1] == '0') ||
                     numberDigits < 3)
            {
                ExpandNumber(numberString, wordRelation);
            }
            else if (numberDigits % 2 == 1)
            {
                string firstDigit = Digit2Num[numberString[0] - '0'];
                wordRelation.AddWord(firstDigit);
                ExpandId(numberString.JSubString(1, numberDigits), wordRelation);
            }
            else
            {
                ExpandNumber(numberString.JSubString(0, 2), wordRelation);
                ExpandId(numberString.JSubString(2, numberDigits), wordRelation);
            }
        }
Example #7
0
        public static void ExpandLetters(string letters, WordRelation wordRelation)
        {
            letters = letters.ToLower();
            char c;

            for (int i = 0; i < letters.Length; i++)
            {
                // if this is a number
                c = letters[i];
                if (char.IsDigit(c))
                {
                    wordRelation.AddWord(Digit2Num[c - '0']);
                }
                else if (letters.Equals("a"))
                {
                    wordRelation.AddWord("_a");
                }
                else
                {
                    wordRelation.AddWord(c.ToString(CultureInfo.InvariantCulture));
                }
            }
        }
Example #8
0
        public static void ExpandNumber(string numberString, WordRelation wordRelation)
        {
            int numDigits = numberString.Length;

            if (numDigits == 0)
            {
                // wordRelation = null;
            }
            else if (numDigits == 1)
            {
                ExpandDigits(numberString, wordRelation);
            }
            else if (numDigits == 2)
            {
                Expand2DigitNumber(numberString, wordRelation);
            }
            else if (numDigits == 3)
            {
                Expand3DigitNumber(numberString, wordRelation);
            }
            else if (numDigits < 7)
            {
                ExpandBelow7DigitNumber(numberString, wordRelation);
            }
            else if (numDigits < 10)
            {
                ExpandBelow10DigitNumber(numberString, wordRelation);
            }
            else if (numDigits < 13)
            {
                ExpandBelow13DigitNumber(numberString, wordRelation);
            }
            else
            {
                ExpandDigits(numberString, wordRelation);
            }
        }
Example #9
0
 private static void Expand2DigitNumber(string numberString, WordRelation wordRelation)
 {
     if (numberString[0] == '0')
     {
         // numberString is "0X"
         if (numberString[1] == '0')
         {
             // numberString is "00", do nothing
         }
         else
         {
             // numberString is "01", "02" ...
             string number = Digit2Num[numberString[1] - '0'];
             wordRelation.AddWord(number);
         }
     }
     else if (numberString[1] == '0')
     {
         // numberString is "10", "20", ...
         string number = Digit2Enty[numberString[0] - '0'];
         wordRelation.AddWord(number);
     }
     else if (numberString[0] == '1')
     {
         // numberString is "11", "12", ..., "19"
         string number = Digit2Teen[numberString[1] - '0'];
         wordRelation.AddWord(number);
     }
     else
     {
         // numberString is "2X", "3X", ...
         string enty = Digit2Enty[numberString[0] - '0'];
         wordRelation.AddWord(enty);
         ExpandDigits(numberString.JSubString(1, numberString.Length), wordRelation);
     }
 }
Example #10
0
 private static void ExpandNumberAt(string numberString, int startIndex, WordRelation wordRelation)
 {
     ExpandNumber(numberString.JSubString(startIndex, numberString.Length), wordRelation);
 }
Example #11
0
        private static void ExpandLargeNumber(string numberString, string order, int numberZeroes, WordRelation wordRelation)
        {
            int numberDigits = numberString.Length;

            // parse out the prefix, e.g., "113" in "113,000"
            int    i    = numberDigits - numberZeroes;
            string part = numberString.JSubString(0, i);

            // get how many thousands/millions/billions
            Item oldTail = wordRelation.Tail;

            ExpandNumber(part, wordRelation);
            if (wordRelation.Tail != oldTail)
            {
                wordRelation.AddWord(order);
            }
            ExpandNumberAt(numberString, i, wordRelation);
        }
Example #12
0
 private static void ExpandBelow13DigitNumber([In] string numberString, WordRelation wordRelation)
 {
     ExpandLargeNumber(numberString, "billion", 9, wordRelation);
 }
Example #13
0
 private static void ExpandBelow10DigitNumber(string numberString, WordRelation wordRelation)
 {
     ExpandLargeNumber(numberString, "million", 6, wordRelation);
 }
Example #14
0
 private static void ExpandBelow7DigitNumber(string numberString, WordRelation wordRelation)
 {
     ExpandLargeNumber(numberString, "thousand", 3, wordRelation);
 }