Exemple #1
0
        private static IEnumerable <string> ParseQuotedStrings(string toParse, char quoteChar, char delimiter, int line)
        {
            string parsedStr   = string.Empty;
            bool   insideQuote = false;

            for (int i = 0; i < toParse.Length; i++)
            {
                if (toParse[i] != quoteChar & toParse[i] != delimiter)
                {
                    parsedStr += toParse[i];
                }
                else if (toParse[i] == delimiter)
                {
                    if (!insideQuote)
                    {
                        yield return(CsvOperations.ExtractQuotedStr(parsedStr, quoteChar));

                        parsedStr = string.Empty;
                    }
                    else
                    {
                        parsedStr += toParse[i];
                    }
                }
                else if (toParse[i] == quoteChar && i != 0 && i - 1 > 0 && toParse[i - 1] == delimiter)
                {
                    insideQuote = true;
                    parsedStr  += toParse[i];
                }
                else if (toParse[i] == quoteChar & i == toParse.Length - 1)
                {
                    parsedStr += toParse[i];
                }
                else if (toParse[i] == quoteChar & toParse[i + 1] == delimiter)
                {
                    insideQuote = false;
                    parsedStr  += toParse[i];
                }
                else if (toParse[i] == quoteChar)
                {
                    parsedStr += toParse[i];
                }
                else if (toParse[i] == delimiter)
                {
                    parsedStr += toParse[i];
                }
            }
            yield return(CsvOperations.ExtractQuotedStr(parsedStr, quoteChar));

            parsedStr = string.Empty;
            yield break;
        }