package com.xzx.gc.common.utils; import cn.hutool.core.codec.Base64; import cn.hutool.core.convert.Convert; import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import java.math.BigDecimal; import java.util.regex.Pattern; /** * @Description: * @Date: 2018/7/17 * @Author: wcf */ public class StringUtils extends org.apache.commons.lang3.StringUtils{ /** * 是否是base64编码 * @param str * @return */ public static boolean isBase64(String str) { if(StrUtil.isBlank(str))return false; if(str.length()==4&&NumberUtil.isNumber(str))return false; String base64Pattern = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$"; return Pattern.matches(base64Pattern, str); } /** * 是否包含中文 * @param strName * @param firstLetter 是否只查询第一个字符 * @return */ public static boolean isContainChinese(String strName,boolean firstLetter) { char[] ch = strName.toCharArray(); for (int i = 0; i < ch.length; i++) { char c = ch[i]; if(firstLetter){ if (isChinese(c)) { return true; }else { return false; } }else { if (isChinese(c)) { return true; } } } return false; } // 根据Unicode编码完美的判断中文汉字和符号 private static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) { return true; } return false; } /** * 将数字转换为万的单位 * @param number * @return */ public static String intChange2Str(int number) { String str = ""; if (number <= 0) { str = "0"; } else if (number < 10000) { str = number+""; } else { double d = (double) number; double num = d / 10000;//1.将数字转换成以万为单位的数字 BigDecimal b = new BigDecimal(num); double f1 = b.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();//2.转换后的数字四舍五入保留小数点后一位; str = f1 + "万"; } return str; } /** * 截取掉最后一个字符串 * @param strBuilder * @param charcode * @return */ public static String removeLast(StrBuilder strBuilder, String charcode){ if(strBuilder.length()>0){ String s = strBuilder.toString(); String s1 = StrUtil.removeSuffix(s, charcode); return s1; } return strBuilder.toString(); } /** * 净化字符 * @param str * @return */ public static String cleanStr(String str){ if(StrUtil.isNotBlank(str)){ str=str .replaceAll("\\s*", ""); str=str.replaceAll("/n",""); } return str; } /** * 解码字符串 * @param str * @return */ public static String decode(String str){ if(StrUtil.isNotBlank(str)&&isBase64(str)){ return Base64.decodeStr(str); } return str; } public static String encode(String str){ if(StrUtil.isNotBlank(str)){ return Base64.encode(str); } return str; } public static String addZero(int num){ if(num>0&&num<10&&!Convert.toStr(num).startsWith("0")){ return "0"+num; } return num+""; } }