Java 文件(夹)名时间格式数据提取

在上传文件时我们需要针对上传文件的文件名进行处理,文件名一般都是【(2021.05.10)北京市xx区水源安全管控项目】等格式的,时间代表的是投标时间,名称是投标文件的名称,但是此名称是人为收集资料并创建的文件或者文件夹,名称创建的不统一、规范,格式可能还有:
1、时间数据外存在或不存在中英文括号;
2、时间格式【.】或【-】连接;
3、时间日期数据可能在名称任何位置;
4、被处理对象可能是一个投标文件也有可能一个投标文件夹(里面存在多个相关文件);

我们的处理最终目标就是将投标文件(夹)的时间和文件(夹)名拆分处理达到数据入库能记录到投标时间和单纯的文件(夹)名称,下面直接上代码;

	/**
     * 投标工程名和中标时间的处理
     */
    public Map getNameAndTiem(File fileIndex){
     
        Map map = new HashMap();
        String time = new String();
        String name = new String();
        String s = new String();
        // 中标时间
        String nameD = fileIndex.getName().replace(" ", "");
        Pattern patternH = Pattern.compile("[0-9]{4}[.][0-9]{1,2}[.][0-9]{1,2}");
        Matcher timeM = patternH.matcher(nameD);
        if(timeM.find()){
     
            time = timeM.group(0);
            // 去除日期的工程名
            s = nameD.replace(time, "");
            // 去除可能存在的“()”
            name = s.replace("()", "").replace("()", "");
            if(time.contains(".")){
     
                time = time.replace(".", "-");
            }
        }else{
     
            Pattern patternD = Pattern.compile("[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2}");
            Matcher timeD = patternD.matcher(nameD);
            if(timeD.find()){
     
                time = timeD.group(0);// 去除日期的工程名
                s = nameD.replace(time, "");// 去除可能存在的“()”
                name = s.replace("()", "").replace("()", "");
            }
        }
        map.put("time", time);
        // 项目名称 - 若单个文档即为整个投标文件,则需要将文档的扩展名去除
        if(name.contains(".")){
     
            String substring = name.substring(0, name.indexOf("."));
            name =  substring;
        }
        map.put("name", name);
        return map;
    }

其中主要其实就是两个正则表达式[0-9]{4}[.][0-9]{1,2}[.][0-9]{1,2}[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2},分别针对时间数据的两种连接方式(【.】和【-】);

你可能感兴趣的:(Java开发点滴,随记,文件夹名时间格式数据提取)