作者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