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下測試的。若是運行在其餘環境和應用程序下,還需進行測試,規則可能不同。