Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengasingkan Lajur CSV kepada Tatasusunan Individu dalam C#?

Bagaimanakah Saya Boleh Mengasingkan Lajur CSV kepada Tatasusunan Individu dalam C#?

Patricia Arquette
Lepaskan: 2025-01-26 06:46:09
asal
434 orang telah melayarinya

Kod C# ini dengan cekap memisahkan lajur CSV ke dalam tatasusunan individu. Mari kita memperbaikinya untuk kejelasan dan keteguhan.

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

kod C# yang lebih baik untuk pemisahan lajur CSV:

Versi ini mengendalikan kesilapan yang berpotensi, seperti nilai yang hilang atau pembatas yang salah, dan membolehkan bilangan lajur yang berubah -ubah:

<code class="language-csharp">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();
            }
        }
    }
}</code>
Salin selepas log masuk
Kod yang lebih baik ini:

    mengendalikan pelbagai lajur:
  • ia secara dinamik mencipta senarai untuk setiap lajur berdasarkan baris pertama.
  • Pengendalian ralat:
  • Termasuk blok untuk mengendalikan dan pengecualian potensi lain. try-catch FileNotFoundException
  • Pemangkasan ruang putih:
  • Menggunakan untuk menghapuskan ruang putih yang terkemuka/trailing dari setiap nilai. Trim() mengendalikan panjang baris yang tidak konsisten:
  • dengan anggun mengendalikan fail CSV di mana beberapa baris mempunyai nilai yang lebih sedikit daripada yang lain.
  • output yang lebih jelas:
  • membentangkan output dalam format yang lebih teratur dan boleh dibaca.
  • Menggunakan parameter pembatas:
  • membolehkan anda menentukan pembatas (mis., ',', ',' | ') Jika bukan titik koma.
  • ingat untuk menggantikan
  • dengan laluan sebenar ke fail CSV anda. Penyelesaian yang mantap ini memberikan pendekatan yang lebih dipercayai dan serba boleh untuk memproses data CSV dalam C#.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengasingkan Lajur CSV kepada Tatasusunan Individu dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan