看板 java 關於我們 聯絡資訊
如版主說的, 找 CSV parser 的 lib 比較快 但小心有些版本實作在處理換行字元時,跟 EXCEL 剖析的結果不太一樣 有些版本則是處理 "" 不太相同。 要問實作思路的話,一般會取得 char array,再逐字處理。 // //以下是程式片段的空殼.... // //================================= //List<String> allToken //StringBuilder resultToken //boolean tokenBlock //boolean quoteBlock // char content[] = str.toCharArray(); for (int i = 0; i < content.length; i++) { switch (content[i]) { case ',': // , 處理,看是否在雙引號區域內 // do something break; case '\"': // 雙引號區域相關判斷 // 有些判斷要看 content[i + 1] // do something break; default: // doSomething break; } if (!tokenBlock) { // 遇到分隔用,後的第一個字元,可取出前一個 token allTokens.add(resultToken.toString()); resultToken.setLength(0); } } ※ 引述《bera (k.k)》之銘言: : 而進階的資料可能會像 : String str = : "小尚,\"Abby, Sun\",girl,0911-XXX0L9,\"si, Tokyo, Relax~~\",1988/11/20"; : 這樣的形式 : 不知道可不可以請教一下思路呢? 謝謝~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.20.54
coolcomm:簡單來說就是 state machine ... 05/02 21:41
TsaiCF:http://lmgtfy.com/?q=CSV+BNF 或者用這種方式寫?? 05/03 00:04
bera:感謝提供連結, 我努力化中~~ 05/03 09:13
bera:感謝TsaiCF, 我試試看~~ 05/03 09:21