看板 java 關於我們 聯絡資訊
期末程式課要做專題,我打算做個字串處理的程式 可以分析一個既存的清單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
LPH66:問題大概在 BufferedReader...你一定用了 readLine() 對吧? 06/03 03:07
LPH66:這樣程式一次只看到一行 所以StringTokenizer連切都沒切 06/03 03:08
LPH66:因為 BufferedReader 已經幫你照每一行切開了 06/03 03:10
我後來有發現這個問題,我嘗試的解決方法是: 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)
meisheep:我作完這個再對temp用StringTokenizer 06/03 03:15
meisheep:忘了補上,br是一個BufferedReader物件 06/03 03:17
tkcn:對 temp 作? 不是應該對 whole 嗎?y 06/03 20:27
對,感謝提醒QQ
bitlife:自己 readLine,append至StringBuffer,若讀到空行,則以 06/03 23:04
bitlife:StringBuffer內容作為一個token 06/03 23:07
我去讀讀看StringBuffer的API Doc,先謝了!! ※ 編輯: meisheep 來自: 140.120.231.101 (06/04 00:25)
tkcn:順便說一下,其實自己判斷 readLine().size()==0 就知道斷在 06/04 01:35