C# Academy · Les

Eenvoudige patronen voor CSV-parsing

Parse CSV-regels: gebruik voor eenvoudige bestanden een naïeve Split, veilige TryParse voor getallen en daarna een kleine splitter die rekening houdt met aanhalingstekens voor komma’s binnen quotes.

Les 3 van 38 stappen

Eenvoudige patronen voor CSV-parsing is een gratis C# Academy-les op CoddyKit. Dit is les 3 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 3 lessen.

Overzicht van CSV-parseren

Doel: Kleine CSV-bestanden betrouwbaar parseren.

  • Begin met eenvoudige Split voor bestanden zonder aanhalingstekens
  • Gebruik TryParse voor getallen
  • Verwerk velden tussen aanhalingstekens met een kleine scanner

Naïef splitsen zonder aanhalingstekens

Voor CSV zonder aanhalingstekens werkt een eenvoudige Split goed en is die gemakkelijk te lezen.

using System;

public class Program
{
  public static void Main(string[] args)
  {
    // Simple: no quotes, commas separate fields
    string line = "Apple,10,2.5";
    string[] parts = line.Split(','); // naive split

    Console.WriteLine("Name = " + parts[0]);
    Console.WriteLine("Qty  = " + parts[1]);
    Console.WriteLine("Price= " + parts[2]);
  }
}

Veilig parseren van getallen

Gebruik Trim en TryParse met een cultuur (bijvoorbeeld InvariantCulture) om crashes door ongeldige gegevens te voorkomen.

using System;
using System.Globalization;

public class Program
{
  public static void Main(string[] args)
  {
    string line = "Banana, 7, 1.99";
    string[] p = line.Split(',');

    string name = p[0].Trim();
    int qty;
    double price;

    bool okQty = Int32.TryParse(p[1].Trim(), NumberStyles.Integer, CultureInfo.InvariantCulture, out qty);
    bool okPrice = Double.TryParse(p[2].Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out price);

    Console.WriteLine("Parsed: " + name + " | ok=" + (okQty && okPrice) + " -> " + qty + " x " + price);
  }
}

Waarom naïef splitsen mislukt

Velden tussen aanhalingstekens kunnen komma's bevatten; een gewone Split splitst het veld op in stukken.

using System;

public class Program
{
  public static void Main(string[] args)
  {
    // Name has a comma inside quotes; naive split breaks it
    string line = "\"Orange, Blood\",12,3.40";
    string[] parts = line.Split(','); // wrong: splits inside the quoted name

    Console.WriteLine("Parts found = " + parts.Length); // 4, not 3
    foreach (string s in parts) Console.WriteLine("[" + s + "]");
  }
}

Splitsen met ondersteuning voor aanhalingstekens

Een kleine scanner wisselt de waarde van inQuotes en negeert komma's binnen aanhalingstekens; dubbele aanhalingstekens worden ook verwerkt.

using System;
using System.Collections.Generic;
using System.Text;

public class Program
{
  // Splits a CSV line handling quotes and doubled "" inside quoted fields.
  static List<string> SplitCsvLine(string line)
  {
    List<string> fields = new List<string>();
    StringBuilder sb = new StringBuilder();
    bool inQuotes = false;

    for (int i = 0; i < line.Length; i++)
    {
      char c = line[i];

      if (c == '\"')
      {
        if (inQuotes && i + 1 < line.Length && line[i + 1] == '\"')
        {
          // Escaped quote ("") inside a quoted field
          sb.Append('\"');
          i++; // skip next quote
        }
        else
        {
          inQuotes = !inQuotes; // toggle
        }
      }
      else if (c == ',' && !inQuotes)
      {
        fields.Add(sb.ToString());
        sb.Length = 0; // reset
      }
      else
      {
        sb.Append(c);
      }
    }

    fields.Add(sb.ToString());
    return fields;
  }

  public static void Main(string[] args)
  {
    string line = "\"Orange, Blood\",12,\"He said \"\"Hi!\"\"\"";
    List<string> parts = SplitCsvLine(line);

    Console.WriteLine("Fields = " + parts.Count);
    foreach (string f in parts) Console.WriteLine("[" + f + "]");
  }
}

Van CSV naar objecten

Combineer de splitter met TryParse en minimale opschoning om veilig objecten met het juiste type op te bouwen.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;

public sealed class Product
{
  public string Name;
  public int Quantity;
  public double Price;
}

public class Program
{
  static List<string> SplitCsvLine(string line)
  {
    List<string> fields = new List<string>();
    StringBuilder sb = new StringBuilder();
    bool inQuotes = false;

    for (int i = 0; i < line.Length; i++)
    {
      char c = line[i];
      if (c == '\"')
      {
        if (inQuotes && i + 1 < line.Length && line[i + 1] == '\"')
        { sb.Append('\"'); i++; }
        else { inQuotes = !inQuotes; }
      }
      else if (c == ',' && !inQuotes)
      { fields.Add(sb.ToString()); sb.Length = 0; }
      else
      { sb.Append(c); }
    }
    fields.Add(sb.ToString());
    return fields;
  }

  static bool TryParseProduct(string line, out Product p)
  {
    p = null;
    List<string> f = SplitCsvLine(line);
    if (f.Count < 3) return false;

    string name = f[0].Trim().Trim('\"');
    int qty;
    double price;

    bool okQty = Int32.TryParse(f[1].Trim(), NumberStyles.Integer, CultureInfo.InvariantCulture, out qty);
    bool okPrice = Double.TryParse(f[2].Trim(), NumberStyles.Float, CultureInfo.InvariantCulture, out price);
    if (!okQty || !okPrice) return false;

    p = new Product { Name = name, Quantity = qty, Price = price };
    return true;
  }

  public static void Main(string[] args)
  {
    string[] lines = new string[]
    {
      "\"Orange, Blood\",12,3.4",
      "Apple,10,2.5",
      "\"He said \"\"Hi\"\"\",1,0.0"
    };

    List<Product> list = new List<Product>();
    foreach (string line in lines)
    {
      Product p;
      if (TryParseProduct(line, out p)) list.Add(p);
    }

    foreach (Product p in list)
    {
      Console.WriteLine(p.Name + " -> " + p.Quantity + " @ " + p.Price);
    }
  }
}

Regel voor velden tussen aanhalingstekens

Snelle controle: Hoe verwerk je komma's in velden tussen aanhalingstekens in CSV correct?

Herhaling

Herhaling: Gebruik eenvoudige Split voor CSV zonder aanhalingstekens, parseer getallen met TryParse en schakel over op een scanner die aanhalingstekens herkent wanneer velden komma's kunnen bevatten.

Gratis beginnen

Leer C# met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
93
Lessen
346

Veelgestelde vragen

Is de les “Eenvoudige patronen voor CSV-parsing” gratis?

Ja — de volledige tekst van “Eenvoudige patronen voor CSV-parsing” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 3 lessen.

Wat leer ik in “Eenvoudige patronen voor CSV-parsing”?

Parse CSV-regels: gebruik voor eenvoudige bestanden een naïeve Split, veilige TryParse voor getallen en daarna een kleine splitter die rekening houdt met aanhalingstekens voor komma’s binnen quotes. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C# Academy te beginnen?

Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.

Hoe lang duurt de les “Eenvoudige patronen voor CSV-parsing”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C# Academy?

Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. System.IO (paden, streams)
  2. JSON met System.Text.Json (opt-in, converters)
  3. Eenvoudige patronen voor CSV-parsing
← Terug naar C# Academy