Maison > développement back-end > C++ > Comment puis-je séparer les colonnes CSV en tableaux individuels en C# ?

Comment puis-je séparer les colonnes CSV en tableaux individuels en C# ?

Patricia Arquette
Libérer: 2025-01-26 06:46:09
original
502 Les gens l'ont consulté

Ce code C # sépare efficacement les colonnes CSV en tableaux individuels. Affinons-le pour la clarté et la robustesse.

How Can I Separate CSV Columns into Individual Arrays in C#?

Code C # amélioré pour la séparation des colonnes CSV:

Cette version gère les erreurs potentielles, telles que les valeurs manquantes ou les délimiteurs incorrects, et permet un nombre variable de colonnes:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

public class CsvSplitter
{
    public static List<List<string>> SeparateCsvColumns(string filePath, char delimiter = ';')
    {
        List<List<string>> columns = new List<List<string>>();

        try
        {
            using (var reader = new StreamReader(filePath))
            {
                string line;
                bool firstLine = true;

                while ((line = reader.ReadLine()) != null)
                {
                    string[] values = line.Split(delimiter);

                    if (firstLine)
                    {
                        // Initialize lists for each column on the first line
                        for (int i = 0; i < values.Length; i++)
                        {
                            columns.Add(new List<string>());
                        }
                        firstLine = false;
                    }

                    // Add values to corresponding columns.  Handles lines with fewer values than the header.
                    for (int i = 0; i < Math.Min(values.Length, columns.Count); i++)
                    {
                        columns[i].Add(values[i].Trim()); //Trim whitespace
                    }
                }
            }
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine($"Error: File not found at {filePath}");
            return null; // Or throw a more specific exception
        }
        catch (Exception ex)
        {
            Console.WriteLine($"An error occurred: {ex.Message}");
            return null; // Or throw a more specific exception
        }

        return columns;
    }

    public static void Main(string[] args)
    {
        string filePath = @"C:\test.csv"; //Replace with your file path
        List<List<string>> separatedColumns = SeparateCsvColumns(filePath);

        if (separatedColumns != null)
        {
            for (int i = 0; i < separatedColumns.Count; i++)
            {
                Console.WriteLine($"Column {i + 1}:");
                foreach (string value in separatedColumns[i])
                {
                    Console.WriteLine(value);
                }
                Console.WriteLine();
            }
        }
    }
}
Copier après la connexion

Ce code amélioré:

  • gère plusieurs colonnes: Il crée dynamiquement des listes pour chaque colonne basée sur la première ligne.
  • Gestion des erreurs: comprend try-catch blocs à gérer FileNotFoundException et d'autres exceptions potentielles.
  • Coupage des espaces blancs: utilise Trim() pour éliminer les espaces blancs de tête / traînants de chaque valeur.
  • gère les longueurs de ligne incohérentes: gère gracieusement les fichiers CSV où certaines lignes ont moins de valeurs que d'autres.
  • Sortie plus claire: présente la sortie dans un format plus organisé et lisible.
  • utilise un paramètre Delimiter: vous permet de spécifier le délimiteur (par exemple, ',', ';', '|') s'il ne s'agit pas d'un point-virgule.

N'oubliez pas de remplacer "C:test.csv" par le chemin d'accès réel vers votre fichier CSV. Cette solution robuste fournit une approche plus fiable et polyvalente pour traiter les données CSV en C #.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal