/// <summary>
        /// Parses a delimited string to be seperated
        /// </summary>
        /// <param name="value">String to seperated</param>
        /// <returns>Returns a delimited string</returns>
        public static CommaDelimitedString Parse(string value)
        {
            List<String> stringlist = new List<string>();
            StringBuilder builder = new StringBuilder();
            bool NextSpecial = false;
            bool QuoteOpen = false;

            for (int i = 0; i < value.Length; i++)
            {
                char current = value[i];
                if (NextSpecial == false)
                {
                    switch (current)
                    {
                        case ',':
                            if (QuoteOpen == false)
                            {
                                stringlist.Add(builder.ToString());
                                builder = new StringBuilder();
                            }
                            else
                            {
                                builder.Append(current);
                            }
                            break;

                        case '\\':
                            NextSpecial = true;
                            break;

                        case '"':
                            QuoteOpen ^= true;
                            break;

                        default:
                            builder.Append(current);
                            break;
                    }
                }
                else
                {
                    NextSpecial = false;
                    switch (current)
                    {
                        case ',':
                            if (QuoteOpen == false)
                            {
                                stringlist.Add(builder.ToString());
                                builder = new StringBuilder();
                            }
                            else
                            {
                                builder.Append(current);
                            }
                            break;

                        case '"':
                            builder.Append(current);
                            break;

                        default:
                            builder.Append('\\');
                            builder.Append(current);
                            break;
                    }
                }
            }
            stringlist.Add(builder.ToString());

            CommaDelimitedString delimitedString = new CommaDelimitedString();
            delimitedString._Fields = stringlist.ToArray();
            return delimitedString;
        }
Beispiel #2
0
        /// <summary>
        /// Parses a delimited string to be seperated
        /// </summary>
        /// <param name="value">String to seperated</param>
        /// <returns>Returns a delimited string</returns>
        public static CommaDelimitedString Parse(string value)
        {
            List <String> stringlist  = new List <string>();
            StringBuilder builder     = new StringBuilder();
            bool          NextSpecial = false;
            bool          QuoteOpen   = false;

            for (int i = 0; i < value.Length; i++)
            {
                char current = value[i];
                if (NextSpecial == false)
                {
                    switch (current)
                    {
                    case ',':
                        if (QuoteOpen == false)
                        {
                            stringlist.Add(builder.ToString());
                            builder = new StringBuilder();
                        }
                        else
                        {
                            builder.Append(current);
                        }
                        break;

                    case '\\':
                        NextSpecial = true;
                        break;

                    case '"':
                        QuoteOpen ^= true;
                        break;

                    default:
                        builder.Append(current);
                        break;
                    }
                }
                else
                {
                    NextSpecial = false;
                    switch (current)
                    {
                    case ',':
                        if (QuoteOpen == false)
                        {
                            stringlist.Add(builder.ToString());
                            builder = new StringBuilder();
                        }
                        else
                        {
                            builder.Append(current);
                        }
                        break;

                    case '"':
                        builder.Append(current);
                        break;

                    default:
                        builder.Append('\\');
                        builder.Append(current);
                        break;
                    }
                }
            }
            stringlist.Add(builder.ToString());

            CommaDelimitedString delimitedString = new CommaDelimitedString();

            delimitedString._Fields = stringlist.ToArray();
            return(delimitedString);
        }