abc.txt文件里是这样的内容
作 者: (美)卡登海德,(美)勒海 著,袁国忠,张劼 译
出 版 社: 人民邮电出版社 出版时间: 2009-2-1
字 数:
版 次: 1
页 数: 381
印刷时间:
开 本: 16开
印 次:
纸 张:
i s b n : 9787115191168
包 装: 平装
所属分类: 图书 >> 计算机/网络 >> 程序设计 >> java java script j2ee
定价:¥45.00
当当价:¥36.00 折扣:80折
节省:¥9.00
现在我想把它处理成:作 者
(美)卡登海德
(美)勒海
著
袁国忠
……
……
……就是一个词占一行,符号之类的最好也能去掉,不知道应该怎么实现?
作 者: (美)卡登海德,(美)勒海 著,袁国忠,张劼 译
出 版 社: 人民邮电出版社 出版时间: 2009-2-1
字 数:
版 次: 1
页 数: 381
印刷时间:
开 本: 16开
印 次:
纸 张:
i s b n : 9787115191168
包 装: 平装
所属分类: 图书 >> 计算机/网络 >> 程序设计 >> java java script j2ee
定价:¥45.00
当当价:¥36.00 折扣:80折
节省:¥9.00
现在我想把它处理成:作 者
(美)卡登海德
(美)勒海
著
袁国忠
……
……
……就是一个词占一行,符号之类的最好也能去掉,不知道应该怎么实现?
只是第2行和第11行有半角的空格不好处理。楼主看着办吧。只能说你的需求实在是太怪了。可以单独处理这两行。
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
List<String> li = new ArrayList<String>();
String temp = "";
while ((temp = br.readLine()) != null) {
temp = temp.trim();
if (!temp.equals(""))
li.add(temp);
}
List<String> li2 = new ArrayList<String>();// 存储结果
String pattern = "";
for (int i = 0; i < li.size(); i++) {
if (i == 1 || i == 10) {
pattern="[:,]";
} else {
pattern="[\\s:>,]";
}
for(String str:li.get(i).split(pattern)){
if (!"".equals(str)){
li2.add(str);
}
}
}
输出
作 者
(美)卡登海德
(美)勒海
著
袁国忠
张劼
译
出 版 社
人民邮电出版社
出版时间
2009-2-1
字 数
版 次
1
页 数
381
印刷时间
开 本
16开
印 次
纸 张
i s b n
9787115191168
包 装
平装
所属分类
图书
计算机/网络
程序设计
java
java
script
j2ee
定价
¥45.00
当当价
¥36.00
折扣
80折
节省
¥9.00
import java.util.*;
import java.io.*;public class Test { public static void main(String[] args) throws FileNotFoundException, IOException {
File file = new File("d:\\\\a.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
File aimFile = new File(file.getParentFile(), "_" + file.getName());
BufferedWriter bw = new BufferedWriter(new FileWriter(aimFile));
BufferedReader br2 = new BufferedReader(new FileReader(aimFile));
String temp = null;
String[] str;
while((temp=br.readLine()) != null) {
temp = temp.replaceAll("[:,[>>]]", ":").trim();
if (temp.length() > 0) {
bw.append(temp);
bw.newLine();
}
}
bw.flush();
while((temp=br2.readLine()) != null) {
str = temp.split("[:]");
for (int i=0;i<str.length;i++) {
System.out.println(str[i]);
}
}
br.close();
bw.close();
br2.close();
}
}
运行结果:
作 者
(美)卡登海德
(美)勒海 著 //这里的 著 字应该在下一行
袁国忠
张劼 译 //这里的 译 字应该在下一行
出 版 社
人民邮电出版社
出版时间
2009-2-1
字 数
版 次
1
页 数
381
印刷时间
开 本
16开
印 次
纸 张
i s b n
9787115191168
包 装
平装
所属分类
图书 //下面不该有这么多空行
//关键是上面的>>换成了两个::,如何把>>换成一个?
计算机/网络 程序设计 java java script j2ee
定价
¥45.00
当当价
¥36.00 折扣 //这里的 折扣 应该在下一行。
80折
节省
¥9.00还是有问题。