public static IEnumerable SplitQuotedString()

in wwauth/Google.Solutions.WWAuth/Util/LinqExtensions.cs [52:91]


        public static IEnumerable<string> SplitQuotedString(
            this string s,
            params char[] separator)
        {
            var splits = new List<string>();
            bool inQuotedSegment = false;

            var segments = s.Split('\'', '"');
            for (int i = 0; i < segments.Length; i++)
            {
                segments[i] = segments[i].Trim(separator);

                if (segments[i].Length == 0 &&
                    (i == 0 || i == segments.Length - 1))
                {
                    //
                    // String starts/ends with a quote - skip
                    // that segment.
                    //
                }
                else if (inQuotedSegment)
                {
                    //
                    // Treat as one.
                    //
                    splits.Add(segments[i]);
                }
                else
                {
                    //
                    // Split as normal.
                    //
                    splits.AddRange(segments[i].Split(separator));
                }

                inQuotedSegment = !inQuotedSegment;
            }

            return splits;
        }