protected CsvEntry GetEntry(string csv) { var result = new CsvEntry(); csv = csv.Trim(); // Check for empty and commented lines. if (csv != string.Empty && !csv.StartsWith("//")) { int ptr = 0, braces = 0; bool inString = false, comment = false; for (int i = 0; i < csv.Length; ++i) { // End of line? var eol = (i == csv.Length - 1); // Quotes if (csv[i] == '"' && braces == 0) inString = !inString; // Braces if (!inString) { if (csv[i] == '{') braces++; else if (csv[i] == '}') braces--; } // Comments if (!inString && csv[i] == '/' && csv[i + 1] == '/') comment = true; if ((csv[i] == Seperator && braces == 0 && !inString) || eol || comment) { // Inc by one to get the last char if (eol) i++; // Get value var v = csv.Substring(ptr, i - ptr).Trim(' ', '\t', '"'); // Trim surrounding braces if (v.Length >= 2 && v[0] == '{' && v[v.Length - 1] == '}') v = v.Substring(1, v.Length - 2); result.Fields.Add(v); // Skip over seperator ptr = i + 1; // Stop at comments if (comment) break; } } } return result; }
protected CsvEntry GetEntry(string csv) { var result = new CsvEntry(); csv = csv.Trim(); // Check for empty and commented lines. if (csv != string.Empty && !csv.StartsWith("//")) { int ptr = 0, braces = 0; bool inString = false, comment = false; for (int i = 0; i < csv.Length; ++i) { // End of line? var eol = (i == csv.Length - 1); // Quotes if (csv[i] == '"' && braces == 0) { inString = !inString; } // Braces if (!inString) { if (csv[i] == '{') { braces++; } else if (csv[i] == '}') { braces--; } } // Comments if (!inString && csv[i] == '/' && csv[i + 1] == '/') { comment = true; } if ((csv[i] == Seperator && braces == 0 && !inString) || eol || comment) { // Inc by one to get the last char if (eol) { i++; } // Get value var v = csv.Substring(ptr, i - ptr).Trim(' ', '\t', '"'); // Trim surrounding braces if (v.Length >= 2 && v[0] == '{' && v[v.Length - 1] == '}') { v = v.Substring(1, v.Length - 2); } result.Fields.Add(v); // Skip over seperator ptr = i + 1; // Stop at comments if (comment) { break; } } } } return(result); }
protected abstract void ReadEntry(CsvEntry entry);