abc.txt文件里是这样的内容
作  者: (美)卡登海德,(美)勒海 著,袁国忠,张劼 译
出 版 社: 人民邮电出版社  出版时间: 2009-2-1 
  字  数: 
  版  次: 1 
  页  数: 381 
  印刷时间: 
  开  本: 16开 
  印  次: 
  纸  张: 
  i s b n : 9787115191168 
  包  装: 平装 
所属分类: 图书 >> 计算机/网络 >> 程序设计 >> java java script j2ee
定价:¥45.00 
当当价:¥36.00 折扣:80折 
节省:¥9.00 
现在我想把它处理成:作  者
(美)卡登海德
(美)勒海

袁国忠
……
……
……就是一个词占一行,符号之类的最好也能去掉,不知道应该怎么实现?

解决方案 »

  1.   

    可以用字符串的split方法,把abc.txt中文字读入字符串中,然后调用split方法,对":"和","进行分割
      

  2.   

    String里面有replaceALL等等方法啊,看API啊
      

  3.   

    把空格,标点符号用\N replace
      

  4.   

    其实作者中间的所谓空格是全角的,还有字数等。逗号和分号也是全角的,分的时候注意。这么留意这个全角半角是因为写毕业论文的时候正好遇到迎评,就是本科教学评估,说是上级会检查。结果整个学校的毕业论文的重点就似乎跑到标点符号的检查上了,尤其是论文后面引用的书籍,严重bs下z国的教育。到不是觉得严谨有什么问题,但是学校给出的标准不统一,老师的意见更不统一,我们就更不统一了。
    只是第2行和第11行有半角的空格不好处理。楼主看着办吧。只能说你的需求实在是太怪了。可以单独处理这两行。
      

  5.   

    FileInputStream fin = new FileInputStream("d:abc.txt");
    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
      

  6.   


    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还是有问题。
      

  7.   

    用String的split()方法,split()里面参数放想要的分隔符
      

  8.   

    深有感触啊,后来我为了论文的格式,用C做的系统,代码全贴的java,因为感觉java的代码要好看些,结果,老师竟没看出来