解决方案 »

  1.   


    谢谢你,不过数据是这样的。----------------------------------------------商户客户号:    商户名称:买入
    ==============================================
     订单号     交易日期-时间         交易流水  
    ----------------------------------------------
     XW314433        20140114               134524
     QS3144P3        20140114               13524

    ==============================================
    总笔数:      2    金额:       卖出
    ===========================================
     订单号     交易日期-时间         交易流水
    -------------------------------------------
     QS3144P3     20140114               134524
    ==========================================
    总笔数:      1    金额:      撤销
    ===========================================
     订单号     交易日期-时间         交易流水
    -------------------------------------------
    ==========================================
    总笔数:      0    金额:   
    我的思路是,写一个正则表达式,去提取====
    任意字符
    ---
    待提取的数据
    ====
    这样一个文本提取出来可以得到3个分组,依次是买入,卖出,撤销的String,然后对这个String按行分割,得到一条明细。现在的问题是自己对正则表达式不熟,但是又不想去用subString,startsWith,等方法。
    这个用正则表达式不知道能实现不?
      

  2.   

    我自己来结贴吧。
    //利用正则表达式
    Pattern p = Pattern.compile("=+\\s.*\\s-+\\s(.*\\s[^(=+)]*)");
    Matcher m = p.matcher(settleFile);
    int i=0;
    String[] detail = new String[3];
    while(m.find()) {
    detail[i] = m.group(1);
    System.out.println("detail["+i+"]="+detail[i]);
    if (log.isDebugEnabled()) {log.debug("detail["+i+"]="+detail[i]);}
    i++;
    }
    if (log.isDebugEnabled()) {log.debug("total="+i);}得到的结果是:
    [2014-02-12 11:17:28,965] DEBUG   
         detail[0]= XW314433        20140114               134524
     QS3144P3        20140114               13524[2014-02-12 11:17:28,966] DEBUG   
         detail[1]= QS3144P3     20140114               134524
    。。