使用C#获取CSV文件每行首尾单元格的实现方法
在C#中提取CSV每行的第一个和最后一个单元格
嘿,我来帮你搞定这个需求!针对你给出的CSV内容(每行单元格数量不一),我们可以通过简单的文件读取和字符串处理来实现目标,下面是具体的实现方案:
完整代码示例
using System; using System.IO; using System.Linq; class Program { static void Main() { // 替换为你的CSV文件实际路径 string filePath = "your-target-file.csv"; // 读取所有行并过滤空行,避免无效处理 var validLines = File.ReadAllLines(filePath).Where(line => !string.IsNullOrWhiteSpace(line)); foreach (var line in validLines) { // 按逗号分割每行的单元格 var cells = line.Split(','); // 提取首尾单元格:兼容单行只有一个单元格的情况 string firstCell = cells[0]; string lastCell = cells[^1]; // C# 8.0+ 支持的便捷索引语法,等价于 cells[cells.Length - 1] // 按要求格式输出结果 Console.Write($"{firstCell},{lastCell} "); } } }
代码细节说明
- 文件读取:用
File.ReadAllLines一次性读取所有行,同时通过Where过滤空行,避免后续分割时出现数组越界问题。 - 单元格分割:这里用
Split(',')做基础分割,适合你给出的无复杂格式的CSV场景。如果你的CSV存在带引号的包含逗号的单元格(比如"a,b",c,d),手动分割会出错,这时候更推荐用专门的CSV解析库(比如NuGet上的CsvHelper)来处理标准CSV格式。 - 首尾提取:
cells[0]直接取第一个元素,C# 8.0及以上版本可以用cells[^1]快速获取最后一个元素;如果是更低版本,换成cells[cells.Length - 1]即可。 - 输出格式:按照你要求的
1,5 6,8 9,10格式,用Console.Write拼接输出;如果需要保存结果到文件,可以把每行的首尾拼接字符串收集到列表中,再用string.Join(" ", resultList)合并后写入文件。
复杂CSV场景补充方案
如果你的CSV有复杂格式(比如带引号、换行的单元格),可以用CsvHelper库来精准处理,示例代码如下:
using CsvHelper; using System.IO; using System.Globalization; class Program { static void Main() { string filePath = "your-target-file.csv"; using var reader = new StreamReader(filePath); using var csv = new CsvReader(reader, CultureInfo.InvariantCulture); csv.Configuration.HasHeaderRecord = false; // 你的CSV没有表头 foreach (var record in csv.GetRecords<string[]>()) { string first = record[0]; string last = record[^1]; Console.Write($"{first},{last} "); } } }
内容的提问来源于stack exchange,提问作者Triết Đào
相关产品推荐
相关产品推荐

