CSV文件/内容中的逗号处理

CSV全称是:Comma Separated Values 或者 Character Separated Values。算法

尽管第一种说法更常见,但我以为仍是第二种说法更确切一些,由于你可使用其它字符作分隔符。测试

使用逗号作分隔符的CSV文件有一个好处:你能够直接用Excel打开。若是使用其它分隔符,好比“|”,你必须告诉Excel该文件使用“|”做分隔符,Excel才能把它导入进来。 spa

前几天,project manager告诉我:咱们有许多CSV文件,都是使用“|”作分隔符,用Excel打开的时候比较麻烦,用户想在Excel中直接打开。这样就须要使用“,”作分隔符。可是文件中有些字段含有逗号,必须对这些逗号特殊处理,才能保证CSV文件在Excel中正确打开。他还给了我一个算法:ci

若是字段中有逗号(,),该字段使用双引号(")括起来;博客

若是该字段中有双引号,该双引号前要再加一个双引号,而后把该字段使用双引号括起来。table

看完project manager的要求,我真是满头起包啊。在IT业混了十几年了,居然不知道这样处理逗号。程序

举几个例子:总结

字段处理前tab

字段处理后di

abc,d2

"abc,d2"

ab"c,d2

"ab""c,d2"

"abc

"""abc"

""

""""""

若是字段中有两个挨着的双引号,好比:aaa""ccc。这种状况不用特殊处理。这是我在写这篇博客的时候才想起来的,赶紧使用Excel测试了一下。还好,不用特殊处理就能正常打开,否则我还得改程序。固然了,若是你把它处理成:"aaa""""ccc" Excel也能正常打开。过后总结总结真是有好处啊。

另外,若是某字段第一个字符是空格,第二个字符是双引号,这种状况不用特殊处理。Project Manager在给我描述算法的时候,也举了一个字段只有一个双引号的例子,但他不当心在双引号前面加了个空格,把问题掩盖过去了。

我是在WinXP和MS Excel2007下测试的。若是运行在其余环境和应用程序下,还需进行测试,规则可能不同。

相关文章
相关标签/搜索