冲txt格式文件里面一行一行的读数,分别送到String对象里面:
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,"31,104,705.73"
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,"100,000.08",0,"104,705.73"
2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,"456,789.99","104,705.73"
....
现在要一行一行的处理为:
2010-4-1;转账;0;0;某某有限责任公司;2904000109048122636;货款;960;0;31104705.73
2010-4-1;转账;0;0;某某有限责任公司;2904000109048122636;货款;100000.08;0;104705.73
....
这样的结果。
其实就是把字符串里的""好去掉并且把,号换为;号。但是字符串里"31,104,705.73"这种值其实就是31104705.73,在把,号换为;号的时候要注意(不然就把31,104,705.73这个数拆分成三个数了)。
最后通过str.split(";")把字符串分割成数组,把对应的值送到对象里面去。请问有啥好办法。

解决方案 »

  1.   

    for example: 2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,"31,104,705.73"
    第1步:先把2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,截取出来(也就是从 0到倒数第二个"的位置),然后再把剩下的做为另外一个字符串
    第2步:用replaceAll()方法把2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,的所有逗号替换成分号,然后再与后面的字符串组合
      

  2.   

    to 2楼
    货款,960,0,"31,104,705.73"
    货款,"100,000.08",0,"104,705.73"
    货款,960,"456,789.99","104,705.73""xxx,xxx.xx"这种数会出现在贷款后面三个数的任意位子,可以同时三个都是。
      

  3.   

    正则表达式
    replaceAll
    public String replaceAll(String replacement)替换模式与给定替换字符串相匹配的输入序列的每个子序列。 
    此方法首先重置匹配器。然后,它将扫描输入序列以查找该模式的匹配项。不属于任何匹配的字符被直接添加到结果字符串;在结果中每个匹配都将被替换字符串所替换。替换字符串可能包含到已捕获子序列的引用,如在 appendReplacement 方法中一样。 注意,在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。 在给定正则表达式 a*b、输入 "aabfooaabfooabfoob" 和替换字符串 "-" 的情况下,为该表达式针对匹配器调用此方法将产生字符串 "-foo-foo-foo-"。 调用此方法将更改此匹配器的状态。如果在将来的匹配操作中使用该匹配器,则应该首先重置它。 
    参数:
    replacement - 替换字符串。 
    返回:
    通过使用替换字符串替换每个匹配子序列,并在需要时取代已捕获子序列所构造的字符串。
      

  4.   

    楼主,你的txt文档是自己设计的,还是别的什么地方的,如果是自己设计的,就把格式往好里设计设计。然后处理起来就很方便了。
      

  5.   

    to 5楼
    txt文档是银行回的对账单,打死也不能变的玩意儿。
      

  6.   

    哪位会正则表达式,
    可以在字符串里把"xxx,xxx.xx"(位数不确定)这种格式,改为"xxxxxx.xx"的格式?
      

  7.   

    System.out.println(str.replaceAll("(\"[\\d\\w]*[^\"]),([\\d\\w]*\\.\\d+\")", "$1$2"));
    试试看。。
      

  8.   

    正则的我不会,笨办法有一个
         StringBuffer sb = new StringBuffer();
    String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"";
    String[] temp = str.split(",\"");
    for (int i = 0; i < temp.length; i++) {
    if (temp[i].indexOf("\"") != temp[i].length()-1) {
    temp[i] = temp[i].replaceAll(",", ";");
    }
    temp[i] = temp[i].replaceAll(",", "").replaceAll("\"", "");
    }

    for (String string : temp) {
    sb.append(string+";");
    }

    System.out.println(sb.toString());
      

  9.   


    有效果。
    成功把"xx,xxx,xxx.xx"里面的逗号去掉了。
    剩下来,我只要把""号去掉,再把逗号换为分号。
      

  10.   


    你的str是什么? 我测试怎么没有效果啊。
      

  11.   


    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    interface Evaluator { public String evaluate(Matcher m); }public class Test { public static String replaceAll(String src, String regex, Evaluator mp) {
    StringBuffer sb = new StringBuffer();
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(src);
            while(m.find()) {
         m.appendReplacement(sb, Matcher.quoteReplacement(mp.evaluate(m)));
         }
         m.appendTail(sb);
            return sb.toString();
    } public static void main(String[] args) {
    String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"\n"
    + "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,\"100,000.08\",0,\"104,705.73\"\n"
    + "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,\"456,789.99\",\"104,705.73\"\n";


    str = replaceAll(str, "\"([^\"]*)\"", new Evaluator() {
    public String evaluate(Matcher m) {
    return m.group(1).replace(",", "");
    }
    });


    str = str.replace(",", ";");

            System.out.println(str);
    }}
      

  12.   

    我的str是:
    String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"";打印显示是:
    2010-4-1,转账,0,0,某某有限责任公司,"2904000109048122636",货款,960,0,“31104705.73”我再把这个字符串:
    str = str.replace("\"", "");//去掉""号
    str = str.replace(",", ";");//将逗号替换为分号最后:
    String[] svo = str.split(";");