ホームページ >バックエンド開発 >C++ >C# で CSV 列を個々の配列に分割するにはどうすればよいですか?

C# で CSV 列を個々の配列に分割するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-26 06:46:09440ブラウズ

このC#コードは、CSV列を個々の配列に効率的に分離します。明確さと堅牢性のためにそれを洗練しましょう。

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

CSV列分離のC#コードの改善:

このバージョンは、欠損値や誤ったデリミターなどの潜在的なエラーを処理し、さまざまな数の列を許可します。

この改善されたコード:

<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>

複数の列を処理:

最初の行に基づいて各列のリストを動的に作成します。
  • エラー処理:ブロックを含めて
  • およびその他の潜在的な例外を処理します。
  • ホワイトスペースのトリミング:を使用して、各値から先頭/末尾の空白を削除します。 try-catchFileNotFoundException一貫性のない行の長さを処理します:
  • いくつかの行が他の行よりも値が少ないCSVファイルを優雅に処理します。
  • クリアな出力:出力は、より整理されて読みやすい形式で提示されます。 Trim()
  • デリミッターパラメーターを使用します:
  • では、セミコロンではない場合は、デリミッター( '、'、 '、'、 '、'、 '|')を指定できます。
  • をCSVファイルへの実際のパスに置き換えることを忘れないでください。 この堅牢なソリューションは、C#。

以上がC# で CSV 列を個々の配列に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。