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+"";
|
}
|
}
|