[問題] 以雙\n做為StringTokenizer的delim

看板java作者 (羊咩)時間13年前 (2012/06/03 02:58), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/1
期末程式課要做專題,我打算做個字串處理的程式 可以分析一個既存的清單txt檔,去截取出每一筆資料 其中每筆資料的分隔都是空一行 於是我想到用StringTokenizer 以"\n\n"去取每筆資料 但不管怎麼取都不是我想要的 經過測試後發現問題在不管我以多少個\n 程式都只當作一個\n來取Token (確定前面的BufferedReader、FileReader等都是沒問題的) 有試著Google過了,但這樣的要求找不太到 我要怎麼做才能以"\n\n"去取Token呢?? 感激不盡! - 附上我要取樣的樣本 篇名:歐洲化衝擊的差異 : 羅馬尼亞與保加利亞加入歐盟期間推動人權保障之進展比較 作者:李正通 刊名:歐美研究 卷期:42卷1期 出版年月:201203 頁次:頁167-219 篇名:超乎現實歷史同時入乎現實歷史:商禽的顛覆策略 作者:葉維廉 刊名:創世紀詩雜誌 卷期:170期 出版年月:201203 頁次:頁154-167 篇名:論屍體器官移植之法規範 作者:李郁強;趙俊祥 刊名:法令月刊 卷期:62卷12期 出版年月:201112 頁次:頁202-233 (其實這是國家圖書館期刊的清單輸出檔) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.120.231.101

06/03 03:07, , 1F
問題大概在 BufferedReader...你一定用了 readLine() 對吧?
06/03 03:07, 1F

06/03 03:08, , 2F
這樣程式一次只看到一行 所以StringTokenizer連切都沒切
06/03 03:08, 2F

06/03 03:10, , 3F
因為 BufferedReader 已經幫你照每一行切開了
06/03 03:10, 3F
我後來有發現這個問題,我嘗試的解決方法是: String temp = br.readLine(); while(temp != null) { System.out.println(temp); //輸出作為測試 whole += temp + "\n"; temp = br.readLine(); } 輸出看起來似乎沒問題,還是我忽略掉哪個細節了呢?? 感謝>< ※ 編輯: meisheep 來自: 140.120.231.101 (06/03 03:14)

06/03 03:15, , 4F
我作完這個再對temp用StringTokenizer
06/03 03:15, 4F

06/03 03:17, , 5F
忘了補上,br是一個BufferedReader物件
06/03 03:17, 5F

06/03 20:27, , 6F
對 temp 作? 不是應該對 whole 嗎?y
06/03 20:27, 6F
對,感謝提醒QQ

06/03 23:04, , 7F
自己 readLine,append至StringBuffer,若讀到空行,則以
06/03 23:04, 7F

06/03 23:07, , 8F
StringBuffer內容作為一個token
06/03 23:07, 8F
我去讀讀看StringBuffer的API Doc,先謝了!! ※ 編輯: meisheep 來自: 140.120.231.101 (06/04 00:25)

06/04 01:35, , 9F
順便說一下,其實自己判斷 readLine().size()==0 就知道斷在
06/04 01:35, 9F
文章代碼(AID): #1Foc9Jc1 (java)