作者meisheep (羊咩)
看板java
標題[問題] 以雙\n做為StringTokenizer的delim
時間Sun Jun 3 02:58:25 2012
期末程式課要做專題,我打算做個字串處理的程式
可以分析一個既存的清單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
1F:推 LPH66:問題大概在 BufferedReader...你一定用了 readLine() 對吧? 06/03 03:07
2F:→ LPH66:這樣程式一次只看到一行 所以StringTokenizer連切都沒切 06/03 03:08
3F:→ 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)
4F:→ meisheep:我作完這個再對temp用StringTokenizer 06/03 03:15
5F:→ meisheep:忘了補上,br是一個BufferedReader物件 06/03 03:17
6F:→ tkcn:對 temp 作? 不是應該對 whole 嗎?y 06/03 20:27
對,感謝提醒QQ
7F:→ bitlife:自己 readLine,append至StringBuffer,若讀到空行,則以 06/03 23:04
8F:→ bitlife:StringBuffer內容作為一個token 06/03 23:07
我去讀讀看StringBuffer的API Doc,先謝了!!
※ 編輯: meisheep 來自: 140.120.231.101 (06/04 00:25)
9F:→ tkcn:順便說一下,其實自己判斷 readLine().size()==0 就知道斷在 06/04 01:35