本帖最后由 Evenque 于 2010-06-07 17:29:36 编辑

解决方案 »

  1.   


    public static void main(String args[]){
            String s1 = "2010-05-07,\"转账\",\"0\",\"00000000000000000\",\"某某公司\",\"2902002109023007384\",\"上交款\",\"3,000.00\",\"0.00\",\"46,440,431.60\"";
            StringBuffer sb= new StringBuffer();
            java.util.regex.Pattern p=java.util.regex.Pattern.compile("(\"[^\"]+\")") ;
            java.util.regex.Matcher m=p.matcher(s1);
            while(m.find()){
                 m.appendReplacement(sb,m.group(1).replace(",",""));
            }
            m.appendTail(sb);
            System.out.println(sb.toString());  
       }
      

  2.   


    //package com.ricky.www;import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test{
    public static void main(String[] args){
    String s1 = "2010-05-07,\"转账\",\"0\",\"00000000000000000\",\"某某公司\",\"2902002109023007384\",\"上交款\",\"3,000.00\",\"0.00\",\"46,440,431.60\"";
    System.out.println(s1);
    s1 = format(s1);
    System.out.println(s1);
    } public static String format(String content){
    String result = null;
    String regex = "(,(\\d{3}))((,(\\d{3}))*)";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(content);
    while(matcher.find()){
    //System.out.println("ricky");
    content = content.replace(matcher.group(),matcher.group(2) + matcher.group(3));
    matcher = pattern.matcher(content);
    }
    return content;
    }
    }
      

  3.   

    很简单:
    s1 = s1.replaceAll("(\\d+),(\\d)", "$1$2");
      

  4.   

    s1.replaceAll("(?:,(?=[0-9]{3}))+", "")
      

  5.   

    你这个能处理"xxx,xxx,xxx.xx"的格式,但是把其他不是这种格式的也处理了。比如,超过1000的数才会有"xx,xxx,xx.xx"这样的格式,比如:
    s1 = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,0,\"31,104,705.73\"";
    这里,你这个正则表达式,把960,0也处理成了9600了。其实应该是:960,0,"31104705.73"现在我想用个正则表达式,把"xx,xxx,xx.xx"或者"xx,xxx.xx"这两种格式里的逗号去掉,注意是带""号的。
      

  6.   

    两种情况,有的不超过千位的就不加双引号,比如:960,0,"123,456.00"
    也有全部加了双引号的,比如:"0.00","100.00","21,345,678.99"所以下载只要把"x,xxx,xxx.xx"或者"xxx,xxx.xx"这种格式的处理,归纳下就是有x为数字,有双引号,有逗号,如果有几个逗号,逗号与逗号之间是三个数。
    可参照下这个帖子:
    http://topic.csdn.net/u/20100531/14/ea8d087e-3810-43fd-bb4e-e33ece0e54ab.html
      

  7.   

    不能处理啊,你用
    String str = "2010-4-1,转账,0,0,某某有限责任公司,\"2904000109048122636\",货款,960,\"100,000.90\",\"31,104,705.73\"";
    试试看。
      

  8.   

    简单万岁
    String s1 = "2010-05-07,\"转账\",\"0\",\"00000000000000000\",\"某某公司\",\"2902002109023007384\",\"上交款\",\"3,000.00\",\"0.00\",\"46,440,431.60\"";
         s1 = s1.replace(",", "");
         s1 = s1.replace("\"", ",\"");
         s1 = s1.replace(",\",", "\",");
         s1 = s1.replace("\"", "");
         s1 = s1.replace(",", ";");
         System.out.println(s1);
      

  9.   

    "xx,xxx,xxx.xx"归纳下:""号在两侧,里面有,号和.号,x都为0-9的数字,如果有多个,号则,号和,号之间肯定是三位数,肯定有.号,.号后面肯定是两位数。
      

  10.   

    s1.replaceAll("(?:,(?=\\d{3}(?:,\\d{3})*(?:\\.\\d+)?\"))", "")
      

  11.   


    那为什么我测试是可以的?public class LogAnalysisMain {    public static void main(String[] args) throws IOException {
            String s1 = "2010-05-07,\"转账\",\"0\",\"00000000000000000\",\"某某公司\",\"2902002109023007384\",\"上交款\",\"3,000.00\",\"0.00\",\"46,440,431.60\"";
            System.out.println(s1);
            s1 = s1.replaceAll("(?:,(?=[0-9]{3}))+", "");
            System.out.println(s1);
        }
    }输出:2010-05-07,"转账","0","00000000000000000","某某公司","2902002109023007384","上交款","3,000.00","0.00","46,440,431.60"
    2010-05-07,"转账","0","00000000000000000","某某公司","2902002109023007384","上交款","3000.00","0.00","46440431.60"