parseDelimitedValues function

List<String> parseDelimitedValues(
  1. String input,
  2. String delimiter
)

Parses comma/tab/pipe separated values

Implementation

List<String> parseDelimitedValues(String input, String delimiter) {
  final values = <String>[];
  String current = '';
  bool inQuotes = false;
  int i = 0;

  while (i < input.length) {
    final char = input[i];

    if (char == backslash && i + 1 < input.length && inQuotes) {
      // Escape sequence in quoted string
      current += char + input[i + 1];
      i += 2;
      continue;
    }

    if (char == doubleQuote) {
      inQuotes = !inQuotes;
      current += char;
      i++;
      continue;
    }

    if (char == delimiter && !inQuotes) {
      values.add(current.trim());
      current = '';
      i++;
      continue;
    }

    current += char;
    i++;
  }

  // Add last value
  if (current.isNotEmpty || values.isNotEmpty) {
    values.add(current.trim());
  }

  return values;
}