예제 #1
0
        //TODO Make String builder
        private void CleanUpExpression()
        {
            if (this.StringExpression.Equals(""))
            {
                Console.WriteLine("ERROR");
            }

            this.StringExpression = StringExpression.Trim();                // Trim by removeing extra spaces at end and beginning
            this.StringExpression = this.StringExpression.Replace(" ", ""); // removes any inline spaces
            //Adds any let out or forgotten multiplication marks ie (A+B)(A+B) -> (A+B)*(A+B)
            for (int i = 0; i < this.StringExpression.Length; i++)
            {
                if (Char.IsLetter(StringExpression[i]))
                {
                    if (Char.IsLower(StringExpression[i]))
                    {
                        StringExpression = StringExpression.Substring(0, i) + Char.ToUpper(StringExpression[i]) +
                                           StringExpression.Substring(i + 1);
                    }

                    //Checks to make sure there are multiplication points where vairbale AND occurs
                    if (i != StringExpression.Length - 1)
                    {
                        if (Char.IsLetter(StringExpression[i + 1]))
                        {
                            StringExpression = StringExpression.Substring(0, i + 1) + "*" +
                                               StringExpression.Substring(i + 1);
                        }
                        //Make sure not out of bounds accessing
                        else if (i != StringExpression.Length - 2 && (StringExpression[i + 1] == '\'' || StringExpression[i + 1] == ')'))
                        {
                            //Where the next char is a inversion or maybe a parenthesis and the AND (*) needs to go after
                            // ie (A+B)'*
                            if (Char.IsLetter(StringExpression[i + 2]))
                            {
                                StringExpression = StringExpression.Substring(0, i + 2) + "*" +
                                                   StringExpression.Substring(i + 2);
                            }
                        }
                    }
                }
            }
        }