Udara/Udara/Common/Feature/Csv/CsvParser.cs
2026-03-19 11:53:15 +08:00

43 lines
1.0 KiB
C#

namespace Udara.Common.Feature.Csv;
public sealed class CsvParser : ICsvParser
{
public IReadOnlyList<string[]> ParseRaw(string csvContent)
{
if (string.IsNullOrWhiteSpace(csvContent))
return Array.Empty<string[]>();
var lines = csvContent
.Split('\n', StringSplitOptions.RemoveEmptyEntries);
var rows = new List<string[]>(lines.Length);
foreach (var line in lines)
{
var columns = line
.TrimEnd('\r')
.Split(',', StringSplitOptions.None);
rows.Add(columns);
}
return rows;
}
public CsvParseResult Parse(string csvContent)
{
var raw = ParseRaw(csvContent);
if (raw.Count == 0)
return new CsvParseResult();
var header = raw[0];
var rows = raw.Skip(1).ToList();
return new CsvParseResult
{
Header = header,
Rows = rows
};
}
}