欢迎访问本站,祝大家玩得愉快。

随笔

Java kany.wang 1273℃ 0评论

首先需要感谢群里的各位给出了各种方案,然后最后我整理出来如下的代码。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Project Name:Kany-Project
 * File Name:RegexTest.java
 * Package Name:
 * Date:2016-1-28下午05:43:42
 * Copyright (c) 2016, Jason.Wang All Rights Reserved.
 *
 */

/**
 * ClassName:RegexTest <br/>
 * Function: 简单的测试. <br/>
 * Date:     2016-1-28 下午05:43:42 <br/>
 * @author   Jason.Wang
 * @version  
 * @since    JDK 1.7
 * @see      
 */
public class RegexTest {

    static String abcd = "2016-1-24,\"PAY000000192303   \",\"677824749  \",\"310000067575   \",2016-1-24 10:42,\"1  \",\"15,000.00\",\"01   \",\"   \",,\"Y \",";
//  static String abcd = "2016-1-24,\"PAY000000192303\",\"677824749\",\"310000067575\",2016-1-24 10:42,\"1\",\"15,000.00\",\"01\",\"\",,\"Y\",";

    /**
     * main:程序启动的主方法. <br/>
     *
     * @author Jason.Wang
     * @param args
     * @since JDK 1.7
     * <pre>
     * 2016年1月28日 18:58:04
     * 遇到按照","分隔数据时,在数字中包含有","的解决办法
     * 1、
     * 2、将数据中有","的先进行处理,然后在去按照split的方式去分组
     * 3、使用正则表达是去匹配,建议安装工具Regex Util - http://regex-util.sourceforge.net/update/
     * 注意:使用这样的正则匹配的时候需要注意group(0)为完整的数据,切记
     * </pre>
     */
    public static void main(String[] args) {
        /**
         * 第一种:使用replace方式将正确分隔的字符处理成其他的符号去转换
         */
//      System.out.println(abcd.trim().replace("\t", ""));
//      abcd = StringUtils.replace(abcd, ",,", ",\" \",");
//      abcd = StringUtils.replace(abcd, ",\"", "|\"");
//      abcd = StringUtils.replace(abcd, "\",", "\"|");
//      String[] an = StringUtils.split(abcd, "|\"");
//      for (String string : an) {
//          System.out.println("====" + string);
//      }
//      System.out.println("结束");

        /**
         * 第二种:先处理掉里面有“,”的数字
         */
//      Pattern pattern = Pattern.compile("(\\d+,?\\d+\\.\\d+)");
//      Matcher matcher = pattern.matcher(abcd);
//      if(matcher.find()){
//          String temp = (matcher.group());
//          abcd = abcd.replace(temp, temp.replace(",", ""));
//      }
//      System.out.println(abcd.replace("\t", ""));

        /**
         * 使用正则表达式处理
         */
        Pattern pattern = Pattern.compile("([0-9\\-]+),\"([A-Z0-9]+)\\t+?\",\"([0-9]+)\\t?\",\"([0-9]+)\\t?\",([0-9\\s\\-:]+),\"([0-9]+)\\t?\",\"([0-9,\\.]+)\",\"([0-9]+)\\t?\",\"(\\s+)\",(.*)?,\"([A-Z]+)\\t\"");
        Matcher matcher = pattern.matcher(abcd);
        if (matcher.find()) {
            System.out.println(matcher.groupCount());
            for (int i = 1; i < 12; i++) {
                System.out.println(matcher.group(i));
            }
        }
    }
}

联系方式

  • 小伙伴群:J2EE技术交流

打赏

转载请注明:懒人屋 » 随笔

喜欢 (2)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址