常用工具类

格式类

将字符串转化成unicode码

/**
     * 将字符串转化成unicode码
     * @author shuai.ding
     * @param string
     * @return
     */
    public static String string2Unicode(String string) {

        if (StringUtils.isBlank(string)) {
            return null;
        }

        char[] bytes = string.toCharArray();
        StringBuffer unicode = new StringBuffer();
        for (int i = 0; i < bytes.length; i++) {
            char c = bytes[i];

            // 标准ASCII范围内的字符,直接输出
            if (c >= 0 && c <= 127) {
                unicode.append(c);
                continue;
            }
            String hexString = Integer.toHexString(bytes[i]);

            unicode.append("\\u");

            // 不够四位进行补0操作
            if (hexString.length() < 4) {
                unicode.append("0000".substring(hexString.length(), 4));
            }
            unicode.append(hexString);
        }
        return unicode.toString();
    }

查询字符串中的所有中文字符

    /**
     * 查询字符串中的所有中文字符
     * @param string
     * @return
     */
    public static List<String> readChinese(String string){

        List<String> result = new ArrayList<>();
        Pattern pattern = Pattern.compile("([\u4e00-\u9fa5]+)");
        Matcher matcher = pattern.matcher(string);
        while (matcher.find()){
            //获取这个字符串中所有连续的中文字符串
            result.add(matcher.group());
        }
        return result;
    }

xml转json

    public static JSONObject xml2Json(String xmlStr) {
        Document doc;
        try {
            doc = DocumentHelper.parseText(xmlStr);
            JSONObject json = new JSONObject();
            dom4j2Json(doc.getRootElement(), json);
            return json;
        } catch (DocumentException e) {
            e.printStackTrace();
            return null;
        }

    }

/**
     * xml转json
     *
     * @param element
     * @param json
     */
    public static void dom4j2Json(Element element, JSONObject json) {
        //如果是属性
        for(Object o:element.attributes()){
            Attribute attr=(Attribute)o;
            json.put("@"+attr.getName(), attr.getValue());
        }
        List<Element> chdEl=element.elements();
        if(chdEl.isEmpty()){//第一个节点,没子元素
            json.put(element.getName(), element.getText());
        }
        for(Element e:chdEl){//有子元素
            if(!e.elements().isEmpty()){//子元素也有子元素
                JSONObject chdjson=new JSONObject();
                dom4j2Json(e,chdjson);
                Object o=json.get(e.getName());
                if(o!=null){
                    JSONArray jsona=null;
                    if(o instanceof JSONObject){//如果此元素已存在,则转为jsonArray
                        JSONObject jsono=(JSONObject)o;
                        json.remove(e.getName());
                        jsona=new JSONArray();
                        jsona.add(jsono);
                        jsona.add(chdjson);
                    }
                    if(o instanceof JSONArray){
                        jsona=(JSONArray)o;
                        jsona.add(chdjson);
                    }
                    json.put(e.getName(), jsona);
                }else{
                    if(!chdjson.isEmpty()){
                        json.put(e.getName(), chdjson);
                    }
                }
            }else{//子元素没有子元素
                for(Object o:element.attributes()){//属性值
                    Attribute attr=(Attribute)o;
                    json.put("@"+attr.getName(), attr.getValue());
                }
                json.put(e.getName(), e.getText());//本身值
            }
        }

    }

将xml文件压缩(去掉空格与换行)

public static String convertFromXml(String str) {
        boolean flag = true;
        boolean quotesFlag = true;
        StringBuffer ans = new StringBuffer();
        String tmp = "";
        for (int i = 0; i < str.length(); i++) {
            if ('"' == str.charAt(i)) {
                ans.append(str.charAt(i));
                quotesFlag = !quotesFlag;
            } else if ('<' == str.charAt(i)) {
                tmp = tmp.trim();
                ans.append(tmp);
                flag = true;
                ans.append(str.charAt(i));
            } else if ('>' == str.charAt(i)) {
                if(quotesFlag){
                    flag = false;
                    ans.append(str.charAt(i));
                    tmp = "";
                }else{
                    ans.append("&gt;");
                }
            } else if (flag) {
                ans.append(str.charAt(i));
            } else {
                tmp += str.charAt(i);
            }
        }
        return ans.toString();
    }

将xml文件中的特殊字符转义,防止解析报错

    /**
     * 处理xml中的特殊字符
     * @param Str
     * @return
     */
    public static String filterSpecialCharacters(String Str) {
        String responseResult = Str;
        // 用正则将匹配到的非标签小于号转义
        String ltRegex = "<[^<>]*(?:<)";
        Pattern p = Pattern.compile(ltRegex);
        Matcher m = p.matcher(responseResult);
        String replaceStr;
        while (m.find()) {
            String subStr = m.group();
            if (subStr != null && subStr.length() > 0) {
                replaceStr = "&lt;" + subStr.substring(1);
                responseResult = responseResult.replace(subStr, replaceStr);
            }
        }
        //上面的操作在有多个<号时会识别不到最后一个,再重新match一次找到最后一个<
        m = p.matcher(responseResult);
        while (m.find()) {
            String subStr = m.group();
            if (subStr != null && subStr.length() > 0) {
                replaceStr = "&lt;" + subStr.substring(1);
                responseResult = responseResult.replace(subStr, replaceStr);
            }
        }
        
        
        // 用正则将匹配到的非标签大于号转义
        String gtRegex = "(?:>)[^<>]*>";
        Pattern gtp = Pattern.compile(gtRegex);
        Matcher gtm = gtp.matcher(responseResult);
        String gtReplaceStr;
        while (gtm.find()) {
            String subStr = gtm.group();
            if (subStr != null && subStr.length() > 0) {
                gtReplaceStr = subStr.substring(0, subStr.length() - 1) + "&gt;";
                responseResult = responseResult.replace(subStr, gtReplaceStr);
            }
        }
        gtm = gtp.matcher(responseResult);
        while (gtm.find()) {
            String subStr = gtm.group();
            if (subStr != null && subStr.length() > 0) {
                gtReplaceStr = subStr.substring(0, subStr.length() - 1) + "&gt;";
                responseResult = responseResult.replace(subStr, gtReplaceStr);
            }
        }
        
        return responseResult;

    }

时间类

获取下一天

public static String getNextDate(String stringDate) {
        Calendar c = Calendar.getInstance();
        Date date = null;
        try {
            date = new SimpleDateFormat("yy-MM-dd").parse(stringDate);
        } catch (Exception e) {
            e.printStackTrace();
        }
        c.setTime(date);
        int day1 = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day1 + 1);
        return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    }

金额类

金额元分转换

   /**
     * 金额元转换成分
     *
     * @param
     * @return
     */
    public static int changeYuanToFen(String yuan) {
        if (!StringUtils.isBlank(yuan)) {
            BigDecimal a1 = new BigDecimal(yuan);
            int a2 = a1.multiply(new BigDecimal(100)).intValue();
            return a2;
        } else {
            return 0;
        }
    }

    /**
     * 金额分转元
     *
     * @param price
     * @return
     */
    public static String changeFenToYuan(String price) {
        try {
            return BigDecimal.valueOf(Long.valueOf(price)).divide(new BigDecimal(100)).toString();
        } catch (Exception e) {
            logger.info("changeFenToYuan异常:{}",e.getMessage());
        }
        return "";
    }

通过身份证号码获取出生日期、性别、年龄

/**
     * 通过身份证号码获取出生日期、性别、年龄
     * @param certificateNo
     * @return 返回的出生日期格式:1990-01-01   性别格式:F-女,M-男
     */
    public static Map<String, String> getBirAgeSex(String certificateNo) {
        String birthday = "";
        String age = "";
        String sex = "";

        int year = Calendar.getInstance().get(Calendar.YEAR);
        char[] number = certificateNo.toCharArray();
        boolean flag = true;
        if (number.length == 15) {
            for (int x = 0; x < number.length; x++) {
                if (!flag) return new HashMap<String, String>();
                flag = Character.isDigit(number[x]);
            }
        } else if (number.length == 18) {
            for (int x = 0; x < number.length - 1; x++) {
                if (!flag) return new HashMap<String, String>();
                flag = Character.isDigit(number[x]);
            }
        }
        if (flag && certificateNo.length() == 15) {
            birthday = "19" + certificateNo.substring(6, 8) + "-"
                    + certificateNo.substring(8, 10) + "-"
                    + certificateNo.substring(10, 12);
            sex = Integer.parseInt(certificateNo.substring(certificateNo.length() - 3, certificateNo.length())) % 2 == 0 ? "女" : "男";
            age = (year - Integer.parseInt("19" + certificateNo.substring(6, 8))) + "";
        } else if (flag && certificateNo.length() == 18) {
            birthday = certificateNo.substring(6, 10) + "-"
                    + certificateNo.substring(10, 12) + "-"
                    + certificateNo.substring(12, 14);
            sex = Integer.parseInt(certificateNo.substring(certificateNo.length() - 4, certificateNo.length() - 1)) % 2 == 0 ? "女" : "男";
            age = (year - Integer.parseInt(certificateNo.substring(6, 10))) + "";
        }
        Map<String, String> map = new HashMap<String, String>();
        map.put("birthday", birthday);
        map.put("age", age);
        map.put("sex", sex);
        return map;
    }

排序类

自定义类排序implements Comparable,重写compareTo方法

	@Override
	public int compareTo(Object o) {
		if(o instanceof DBRegisterHistoryVo){
			
			DBRegisterHistoryVo dbRegisterHistoryVo = (DBRegisterHistoryVo) o;
			
			return dbRegisterHistoryVo.getVisitTime().compareTo(this.visitTime);//换时间降序排序
//			return this.visitTime.compareTo(dbRegisterHistoryVo.getVisitTime());//换时间升序排序
		}
		throw new ClassCastException("不能转换为DBRegisterHistoryVo类型的对象...");
	}

//调用
Collections.sort(listVo.getItems());

按中文字母排序,处理特殊字符

亲测好用 :https://blog.csdn.net/abcde123_123/article/details/107693404

maven依赖
<dependency>
   <groupId>com.belerweb</groupId>
   <artifactId>pinyin4j</artifactId>
   <version>2.5.1</version>
</dependency>



HanyuPinyinOutputFormat pinyinOutputFormat = new HanyuPinyinOutputFormat();
Collections.sort(list1, (o1,o2)-> {
    String nameOne = "";
    String nameTwo = "";
    try {
        nameOne = PinyinHelper.toHanYuPinyinString(o1, pinyinOutputFormat, " ", true);
        nameTwo = PinyinHelper.toHanYuPinyinString(o2, pinyinOutputFormat, " ", true);
    } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) {
        badHanyuPinyinOutputFormatCombination.printStackTrace();
    }
    return nameOne.compareTo(nameTwo);
});

文件类

pdf文件转为文件流

    /*pdf文件转换为文件流*/
    @RequestMapping(value = "/getConvert")
    public void getConvert(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HcContext context = this.getHcContext(request);
        Map<String, Object> params = this.getParameters(request);

        LoggerUtil.getLogger(context, logger).info("seq:{},getConvert:{}", context.getMsgSeq(), JSONObject.toJSONString(params));

        if (params != null && !params.isEmpty()) {
            String destUrl = params.get("pdfUrl").toString();
            if (StringUtils.isNotEmpty(destUrl)) {
                response.setContentType("application/pdf");
                response.setHeader("Access-Control-Allow-Origin", "*"); // 解决请求头跨域问题
                ServletOutputStream sos = response.getOutputStream();

                URL url = new URL(destUrl);
                HttpURLConnection httpUrl = (HttpURLConnection) url.openConnection();
                // 连接指定的网络资源
                httpUrl.connect();
                // 获取网络输入流
                BufferedInputStream bis = new BufferedInputStream(httpUrl.getInputStream());
                int b;
                while ((b = bis.read()) != -1) {
                    sos.write(b);
                }
                sos.close(); // 这里有点和c语言里的读取文件有点像
                bis.close();
            }
        }
    }

文档类

利用jxl读取excel表格内容

maven依赖

<!-- jxl 操作excel -->
<dependency>
    <groupId>org.jxls</groupId>
    <artifactId>jxls-jexcel</artifactId>
    <version>1.0.6</version>
</dependency>

       public static void main(String[] args) throws IOException, BiffException {

        List<String> medicineList = new ArrayList<>();
        jxl.Workbook wb =null;
        //注意这里需将文件另存为xls格式,否则jxl不支持
        InputStream is = new FileInputStream("D://需要屏蔽的药品.xls");
        wb = Workbook.getWorkbook(is);

        int sheetSize = wb.getNumberOfSheets();
        Sheet sheet = wb.getSheet(0);
        int row_total = sheet.getRows();
        for (int j = 1; j < row_total; j++) {
            Cell[] cells = sheet.getRow(j);
            medicineList.add(cells[0].getContents());
        }
        System.out.println(medicineList);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值