csv是以逗号未分割符的文本文件,其格式为,以下是百科提供的格式规则,不过也是标准规则了。
1 开头是不留空,以行为单位。
2 可含或不含列名,含列名则居文件第一行。
3 一行数据不跨行,无空行。
4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
5 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。
6 列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
7 文件读写时引号,逗号操作规则互逆。
8 内码格式不限,可为 ASCII、Unicode 或者其他。
9 不支持特殊字符
如"a""b""c",,"nm,m" .解析出来应该是: a"b"c 空列 nm,m
关于csv解析有很多种方法,我在解析时查找了很多资料,我发现的主要有三种,是:
1.使用split函数先根据","分割,然后再根据""进行必要的链接,这种方法过于粗糙,因为一个字段中可能包含逗号和双引号,所以会造成逻辑混乱。
2.使用正则表达式,由于csv字段比较复杂,正则表达式就得复杂,完整,我找了很多正则表达式,有的不完全,强大的我实在看不懂。
3.第三种方式就是一个字符一个字符的解,读一段内容到一个buffer,然后一个字符一个字符的解,