public void TestCsvParser() { var text = "ab,cd,\"efg,\t\",56789,!!!\nhijk,l,mn,43210"; var parser = new CsvParser(text); var col = parser.ToList(); Assert.AreEqual(2, col.Count); Assert.AreEqual(5, col[0].Count); Assert.AreEqual("ab", col[0][0]); Assert.AreEqual("cd", col[0][1]); Assert.AreEqual("efg,\t", col[0][2]); Assert.AreEqual("56789", col[0][3]); Assert.AreEqual("!!!", col[0][4]); Assert.AreEqual(4, col[1].Count); Assert.AreEqual("hijk", col[1][0]); Assert.AreEqual("l", col[1][1]); Assert.AreEqual("mn", col[1][2]); Assert.AreEqual("43210", col[1][3]); var models = parser.ConvertTo <JsonModel>(new[] { "A", "B", "C", "Num" }).ToList(); Assert.AreEqual(2, models.Count); Assert.AreEqual("ab", models[0].A); Assert.AreEqual("cd", models[0].B); Assert.AreEqual("efg,\t", models[0].C); Assert.AreEqual(56789, models[0].Num); Assert.AreEqual("hijk", models[1].A); Assert.AreEqual("l", models[1].B); Assert.AreEqual("mn", models[1].C); Assert.AreEqual(43210, models[1].Num); var jsons = parser.ConvertTo <JsonObjectNode>(new[] { "A", "B", "C", "Num" }).ToList(); Assert.AreEqual(2, jsons.Count); Assert.AreEqual("ab", jsons[0].TryGetStringValue("A")); Assert.AreEqual("cd", jsons[0].TryGetStringValue("B")); Assert.AreEqual("efg,\t", jsons[0].TryGetStringValue("C")); Assert.AreEqual(56789, jsons[0].TryGetInt32Value("Num")); Assert.AreEqual("hijk", jsons[1].TryGetStringValue("A")); Assert.AreEqual("l", jsons[1].TryGetStringValue("B")); Assert.AreEqual("mn", jsons[1].TryGetStringValue("C")); Assert.AreEqual(43210, jsons[1].TryGetInt32Value("Num")); using var stream = IO.CharsReader.ToStream(text, Encoding.UTF8); parser = new CsvParser(stream); col = parser.ToList(); Assert.AreEqual(2, col.Count); Assert.AreEqual(5, col[0].Count); Assert.AreEqual("ab", col[0][0]); Assert.AreEqual("cd", col[0][1]); Assert.AreEqual("efg,\t", col[0][2]); Assert.AreEqual("56789", col[0][3]); Assert.AreEqual("!!!", col[0][4]); Assert.AreEqual(4, col[1].Count); Assert.AreEqual("hijk", col[1][0]); Assert.AreEqual("l", col[1][1]); Assert.AreEqual("mn", col[1][2]); Assert.AreEqual("43210", col[1][3]); }
protected override async Task OnProcessAsync(CancellationToken cancellationToken) { var text = "ab,cd,\"efg\",56789,!!!\nhijk,l,mn,43210"; var parser = new CsvParser(text); await RunAsync(null, cancellationToken); foreach (var line in parser) { Console.Write(line.Count.ToString()); Console.WriteLine(" \t{0} \t{1} \t{2} \t{3}", line[0], line[1], line[2], line[3]); } foreach (var m in parser.ConvertTo <CsvModel>(new[] { "A", "B", "C", "Num" })) { Console.WriteLine("Model \t{0} \t{1} \t{2} \t{3}", m.A, m.B, m.C, m.Num); } var reader = new StringTableDataReader(parser, new[] { "o", "p", "q", "i" }); while (reader.Read()) { Console.Write(reader.FieldCount.ToString()); Console.WriteLine(" \t{0} \t{1} \t{2} \t{3}", reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3)); } }
public override void Process() { var text = "ab,cd,\"efg\",56789,!!!\nhijk,l,mn,43210"; var parser = new CsvParser(text); foreach (var line in parser) { ConsoleLine.Write(ConsoleColor.Blue, line.Count.ToString()); ConsoleLine.WriteLine(" \t{0} \t{1} \t{2} \t{3}", line[0], line[1], line[2], line[3]); } foreach (var m in parser.ConvertTo <CsvModel>(new[] { "A", "B", "C", "Num" })) { ConsoleLine.WriteLine("Model \t{0} \t{1} \t{2} \t{3}", m.A, m.B, m.C, m.Num); } var reader = new StringTableDataReader(parser, new[] { "o", "p", "q", "i" }); while (reader.Read()) { ConsoleLine.Write(ConsoleColor.Blue, reader.FieldCount.ToString()); ConsoleLine.WriteLine(" \t{0} \t{1} \t{2} \t{3}", reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetInt32(3)); } }