//Add New Data Point public void AddNewPoint(string Point) { string DataPoint = Point.Substring(16); Regex matchCommas = new Regex(","); String[] values = matchCommas.Split(DataPoint); COVIDDataPoint NewPoint = new COVIDDataPoint(); NewPoint.Date = values[0]; NewPoint.Country = values[1]; NewPoint.Sex = values[2]; NewPoint.Age = values[3]; NewPoint.ID = Rows[Rows.Count - 1].ID + 1; Rows.Add(NewPoint); string NewDate = NewPoint.Date[3].ToString() + NewPoint.Date[4].ToString() + '.' + NewPoint.Date[0].ToString() + NewPoint.Date[1].ToString() + ".20" + NewPoint.Date[6].ToString() + NewPoint.Date[7].ToString(); string Path = "..\\..\\COVID19_open_line_list_Test.csv"; StringBuilder Line = new StringBuilder(); string newLine = NewPoint.ID.ToString() + "," + NewPoint.Age + "," + NewPoint.Sex + "," + "," + "," + NewPoint.Country + "," + "," + "," + "," + "," + "," + "," + NewDate; Line.Append(newLine); File.AppendAllText(Path, Line.ToString()); }
public static List <COVIDDataPoint> ParseCSV(String fileName) { List <COVIDDataPoint> data = new List <COVIDDataPoint>(); using (StreamReader sr = new StreamReader(fileName)) { // Skip first line to get to the data sr.ReadLine(); while (!sr.EndOfStream) { String line = sr.ReadLine(); Regex matchCommas = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); // Matches all commas in data that aren't inside quotes String[] values = matchCommas.Split(line); COVIDDataPoint point = new COVIDDataPoint(); for (int i = 0; i < values.Length; ++i) { values[i] = values[i].TrimStart('"'); // Remove quotes from data elements if present values[i] = values[i].TrimEnd('"'); } int[] dataIndices = { 0, 1, 2, 5, 12 }; // Indices we care about 0-ID 1-Age, 2-Sex, 5-Country, 12-Date foreach (int index in dataIndices) { String val = values[index]; if (val != "") // Ignore empty data { switch (index) { case 0: point.ID = Int32.Parse(val); break; case 1: point.Age = val; break; case 2: point.Sex = val; break; case 5: point.Country = val; break; case 12: point.Date = val; break; } } } data.Add(point); } } return(data); }