此 C# 程式碼有效地將 CSV 欄位分成單獨的陣列。讓我們對其進行改進,使其更加清晰和穩健。
改進了 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()
刪除每個值的前導/尾隨空格。 請記得將 "C:test.csv"
替換為 CSV 檔案的實際路徑。 這個強大的解決方案提供了一種更可靠、更通用的方法來在 C# 中處理 CSV 資料。
以上是如何在 C# 中將 CSV 列分成單獨的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!