拦截器中用正则表达式替换其中日期格式

数据库中的日期用 字符串接收 后面莫名其妙的 多 .0 然后各种找 把这个解决掉了
思路是用拦截器 将返回给前端的 json 字符串 匹配 然后给替换掉

替换前 2019-08-03 08:51:85.0
替换后 2019-08-03 08:51:85

 @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {
        HttpServletRequest servletRequest = (HttpServletRequest) request;
        String path = servletRequest.getServletPath();
        String method = servletRequest.getMethod();

        //过滤不需要处理的接口 含"."以及绝大部分"GET" 请求都是静态资源
        //加上"GET" 是因为项目中的导出数据都是GET请求,最开始未处理 导致导出数据乱码
        if (path.contains(".") ||  (method.equals("GET") && !path.matches(SysConst.GET_NEED_FILTER_PATH))|| (method.equals("POST") && path.matches(SysConst.POST_NO_NEED_FILTER_PATH))) {// 在过滤url之外
            chain.doFilter(request, response);
        } else {
            ResponseWrapper wrapperResponse = new ResponseWrapper((HttpServletResponse) response);// 转换成代理类
            chain.doFilter(request, wrapperResponse);
            byte[] content = wrapperResponse.getContent();// 获取返回值
            // 判断是否有值
            if (content.length > 0) {
                String str = new String(content, "UTF-8").replaceAll(":null,", ":\"\",").replaceAll(":null", ":\"\"");
                // 把返回值输出到客户端
                ServletOutputStream out = response.getOutputStream();
                Pattern p = Pattern.compile("(\\d{4}\\-\\d{1,2}\\-\\d{1,2}\\s\\d{2}\\:\\d{2}\\:\\d{2}\\.\\d{1})+");
			// 正则 匹配 替换
                Matcher m = p.matcher(str);
                while (m.find()){
                    String group = m.group(0);
                    String replace = group.split("\\.")[0];
                    str  = str.replace(group, replace);
                }
                out.write(str.getBytes("UTF-8"));
                out.flush();
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值