如何使用CSVHelper为每条记录添加首尾竖线分隔符?
解决CSVHelper生成首尾带竖线的竖线分隔文件问题
首先确认你的CSV配置已将分隔符设为竖线:
var config = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = "|", QuoteAllFields = false // 避免字段被引号包裹 };
你之前手动写入分隔符导致重复的原因是:WriteRecord会自动在字段之间插入分隔符,但直接写入分隔符作为开头/结尾,会和字段间的分隔符产生冲突。正确的做法是通过写入空字段来触发首尾的分隔符生成,代码如下:
using (var writer = new StreamWriter("output.txt")) using (var csv = new CsvWriter(writer, config)) { foreach (var record in myList) { // 写入空字段(无引号),触发开头的竖线 csv.WriteField(string.Empty, shouldQuote: false); csv.WriteRecord(record); // 写入空字段(无引号),触发结尾的竖线 csv.WriteField(string.Empty, shouldQuote: false); csv.NextRecord(); } }
这个逻辑的原理是:
- 第一个
WriteField(string.Empty)输出空内容,随后WriteRecord写入第一个字段时,CSVHelper会自动在空内容和第一个字段之间插入分隔符|,生成记录开头的竖线 - 写完所有字段后,第二个
WriteField(string.Empty)会触发CSVHelper在最后一个字段和空内容之间插入分隔符|,生成记录结尾的竖线 - 配合
shouldQuote: false确保空字段不会被引号包裹,最终输出格式和需求示例一致
内容的提问来源于stack exchange,提问作者bigtoasty
相关产品推荐
相关产品推荐

