Fork me on GitHub

开源一个CSV解析器(附设计过程 )

在ExcelReport支持csv的开发过程中,需要一个NETStandard的csv解析器。在nuget上找了几个试用,但都不太适合。

于是,便有了:AxinLib.IO.CSV

 

 先看看怎么用:

 

读出的数据:

 


回到开始:

步骤一、了解CSV格式规范

参考文章:理解CSV格式规范(解析CSV必备)

 总结:

1)字段分隔符:

,

2)行结束符:

\r\n

3)转义符:

"

4)出现以上字符的字段需要用转义符前后括起来

5)转义符的原义需要两个转义符标识

6)文件中的最后一行记录可以有结尾回车换行符,也可以没有。

步骤二、定义状态

通过主流程识别状态:

 

1)新字段开始 
2)非转义状态
3)转义状态
4)转义符原义判定状态
5)字段结束
6)行结束
7)文档结束
8)解析失败

步骤三:通过状态迁移图查缺补漏

步骤四:根据状态迁移图实现代码

 详参见:

 AxinLib.IO.CSV 源码:https://github.com/hanzhaoxin/AxinLib/tree/master/src/AxinLib.IO.CSV

 

posted @ 2019-03-11 06:50  韩兆新  阅读(1644)  评论(4编辑  收藏  举报