コード例 #1
0
        public void breakDownString(string nasty, kParse parseAs)
        {
            string part       = string.Empty;
            int    pos        = 0;
            int    bracecount = 0;

            while (pos < nasty.Length)
            {
                if (nasty[pos] == '(')
                {
                    bracecount++;
                }
                if (nasty[pos] == ')')
                {
                    bracecount--;
                }

                if (nasty[pos] == ',' && bracecount == 0)
                {
                    switch (parseAs)
                    {
                    case kParse.kSelect:
                    {
                        string participle = string.Empty;
                        string astext     = string.Empty;
                        if (breakAs(part, ref participle, ref astext))
                        {
                            SelectList.Add(participle.Trim());
                            AsList.Add(astext.Trim());
                        }
                        else
                        {
                            part = part.Trim();
                            if (part.Length > 0)
                            {
                                SelectList.Add(part.Trim());
                                AsList.Add(string.Empty);
                            }
                        }
                    }
                    break;

                    case kParse.kFrom:
                    {
                        FromList.Add(part.Trim());
                    }
                    break;

                    case kParse.kOrderby:
                    {
                        OrderbyList.Add(part.Trim());
                    }
                    break;
                    }
                    part = string.Empty;
                    pos++;
                }
                else
                {
                    part += nasty[pos].ToString();
                    pos++;
                    if (pos == nasty.Length)
                    {
                        switch (parseAs)
                        {
                        case kParse.kSelect:
                        {
                            string participle = string.Empty;
                            string astext     = string.Empty;
                            if (breakAs(part, ref participle, ref astext))
                            {
                                SelectList.Add(participle.Trim());
                                AsList.Add(astext.Trim());
                            }
                            else
                            {
                                part = part.Trim();
                                if (part.Length > 0)
                                {
                                    SelectList.Add(part.Trim());
                                    AsList.Add(string.Empty);
                                }
                            }
                        }
                        break;

                        case kParse.kFrom:
                            FromList.Add(part.Trim());
                            break;

                        case kParse.kOrderby:
                            OrderbyList.Add(part.Trim());
                            break;
                        }
                    }
                }
            }
        }