Beispiel #1
0
        /// <summary>
        /// Parses a CSV text line and calls for every detected field value the given action.
        /// </summary>
        /// <param name="line">A CSV formated text line.</param>
        /// <param name="valueAction">Action with one string parameter.</param>
        /// <returns>
        /// Number of parsed values
        /// </returns>
        public int Read(string line, Action <int, string> valueAction)
        {
            if (valueAction == null)
            {
                throw new ArgumentNullException(nameof(valueAction));
            }

            _line     = line;
            _position = 0;
            _csvParser.ResetState();

            var valueCount = 0;

            do
            {
                if (_csvParser.NextToken(() => NextChar()))
                {
                    valueAction(valueCount, _csvParser.Token.ToString());
                    valueCount++;
                }
            }while (_csvParser.State != CsvParser.TokenizerState.IsEndOfLine);

            return(valueCount);
        }