看板 C_and_CPP 關於我們 聯絡資訊
原文恕刪.. 在此先再次感謝 love 大協助處理!! 說聲抱歉的是,一開始竟然對 csv 的特性沒抓準。 確認符號: 單引號(') 雙引號(") 逗號(,) 以下是我直接從 M$ excel 存成 csv 結果之整理: 1. 若為純文字、數字,且其中不包含雙引號、單引號、逗號, 則直接以逗號分隔。 2. 若該格無任何內容,則直接跳過該格,即會出現連續二個逗號。 (這點和 wiki 上不同, wiki 指明,若無內容會以 ,"", 方式存) 3. 若該格內容有雙引號或逗號,則將為該儲存格加上雙引號, 同時用 notepad 檔開啟結果,會發現原本的雙引號會以 2個雙引表示 ex: 12"27"53(excel 顯示) ---> "12""27""53"(csv文本) 4. 若該格內容「開頭」有單引號,excel 存完後開頭之單引都將不見 ex: '12'34'(excel 也無法顯示第一個單引號) ----> 12'34'(csv 文本儲存) 整理上述四點,FSM 狀態大致上長這樣: CurrentState ch NextState Action IDLE - First - -------------------------------------------- First , NOTHING - First " Quote0 - First 0 ReadEnd - #end First else PureText - --------------------------------------------- PureText , IDLE - PureText else PureText Output ch ---------------------------------------------- NOTHING - IDLE - (or output NULL) ---------------------------------------------- Quote0 " Quote1 - Quote0 else Quote0 Output ch ---------------------------------------------- Quote1 " Quote0 Output " Quote1 , IDLE - ---------------------------------------------- 花了一點小時間畫了 FSM ( http://ppt.cc/tsJ6 ) 由於沒經驗,畫得也真的有點小亂(也是醜啦) 不知對於這張 FSM 是否有其它建議? 這種方式在效率而言是否會慢許多? (沒問題的話晚上我再 coding 出來跟大家做分享) 亦或差不了多少?謝謝各位版友不吝指教,再次感謝!! -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: tropical72 來自: 180.177.76.142 (12/20 07:37)
nowar100:這篇FSM值得留存下來 :) 12/20 11:56
loveme00835:原來你是要做還原喔 囧rz 12/20 11:56
Yshuan:推這篇~ 原po厲害~ 12/20 13:04
loveme00835:我的話, 還是會把 ',' 的部份分開來做, 欄位切出來再 12/20 13:22
loveme00835:做第二次處理, FSM也會比較簡單 12/20 13:22
loveme00835:剛發現到的問題, 第三點是不是即為: 將欄位中的 ""取 12/20 13:40
loveme00835:代成 ", 之後再將頭尾的 " 去掉? 12/20 13:41
tropical72:!! 是的,就是 loveme00835 大所說的,之前還沒想到說. 12/20 18:11
tropical72:不過如果先把','分開的話,那可能會有這種情形 ,",", 也 12/20 18:16
tropical72:就是內容本身就是逗號,所以我覺得這樣的話就沒很準了. 12/20 18:16
loveme00835:每個欄位容許偶數個 ", 上一篇我就是這樣做 XD 12/20 20:16
tropical72:加上上面的條件的確簡單蠻多的. 12/20 20:54
liang1:期待原po的code分享 12/28 01:31