首页 > 后端开发 > C++ > 如何将CSV列分为C#中的单个数组?

如何将CSV列分为C#中的单个数组?

Patricia Arquette
发布: 2025-01-26 06:46:09
原创
434 人浏览过

此 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-catch 块来处理 FileNotFoundException 和其他潜在的异常。
  • 空格修剪: 使用 Trim() 删除每个值的前导/尾随空格。
  • 处理不一致的行长度: 优雅地处理某些行的值少于其他行的 CSV 文件。
  • 更清晰的输出:以更有组织性和可读性的格式呈现输出。
  • 使用分隔符参数: 如果分隔符不是分号,则允许您指定分隔符(例如“,”、“;”、“|”)。

请记住将 "C:test.csv" 替换为 CSV 文件的实际路径。 这个强大的解决方案提供了一种更可靠、更通用的方法来在 C# 中处理 CSV 数据。

以上是如何将CSV列分为C#中的单个数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板