package com.zdcf.tool; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.HashSet; import java.util.Set; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; public class StringUtil { private static final String IMG_ICON_SMALL = "1"; private static final String IMG_ICON_MEDIUM = "2"; private static final String IMG_ICON_BIG = "3"; public static String urlEncode(String source) { try{ return URLEncoder.encode(source, "UTF-8"); }catch(Exception e){ return null; } } public static void appStringBuffer(StringBuffer sf){ if(StringUtil.notEmpty(sf.toString())){ sf.append("/"); } } public static boolean isMobile(String mobileNum) { if(StringUtils.isBlank(mobileNum)){ return false; } //全是字母 boolean matches = Pattern.matches("(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\\d{8})", mobileNum); if (!matches) { return false; } return true; } public static boolean checkBankCard(String cardId) { char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1)); if(bit == 'N'){ return false; } return cardId.charAt(cardId.length() - 1) == bit; } /** * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位 * @param nonCheckCodeCardId * @return */ public static char getBankCardCheckCode(String nonCheckCodeCardId){ if(nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0 || !nonCheckCodeCardId.matches("\\d+")) { //如果传的不是数据返回N return 'N'; } char[] chs = nonCheckCodeCardId.trim().toCharArray(); int luhmSum = 0; for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) { int k = chs[i] - '0'; if(j % 2 == 0) { k *= 2; k = k / 10 + k % 10; } luhmSum += k; } return (luhmSum % 10 == 0) ? '0' : (char)((10 - luhmSum % 10) + '0'); } public static boolean isPayPassword(String password) { if (StringUtils.isBlank(password)) { return false; } if(password.length() < 6 || password.length() > 12){ return false; } return true; } public static boolean isPassword(String password) { if (StringUtils.isBlank(password)) { return false; } /*boolean matches = Pattern.matches("[a-zA-Z0-9_]{6,16}", password); if (matches) { return true; }*/ boolean matches = password.length()<6 || password.length() > 16; if (matches) { return false; } //全是数字 matches = Pattern.matches("[0-9]*", password); if (matches) { return false; } //是否只包含数字,不包含字符串 matches = Pattern.matches("(.*?)\\d(.*?)", password); if (!matches) { return false; } /* //全是字母 matches = Pattern.matches("[A-Za-z]*", password); if (matches) { return false; } //全是数字 matches = Pattern.matches("[0-9]*", password); if (matches) { return false; } //只能是数字和字母 matches = Pattern.matches("[A-Za-z0-9]*", password); if (!matches) { return false; }*/ return true; } public static boolean isNumeric(String str){ Pattern pattern = Pattern.compile("[0-9]*"); if(StringUtils.isBlank(str)){ return false; } if(!pattern.matcher(str).matches()){ return false; } return true; } /** * @param 用户输入字符串 * @return 过滤了非法字符的串 */ public static String filterString(String source) { return ""; } public static void main(String[] args) { System.out.println(isMobile("19210572067")); } public static String changePlaceholder(String source) { return "abc"; } /** * 方法名称: notEmpty 方法描述: 检测字符串是否不为空(null,"","null") 返回类型: * 不为空则返回true,否则返回false 创建人:zhangsg 创建时间:2014-9-9 晚上19:30:05 * * @throws */ public static boolean notEmpty(String s) { return s != null && !"".equals(s) && !"null".equals(s); } /** * 方法名称: isEmpty 方法描述: 检测字符串是否为空(null,"","null") 返回类型: 为空则返回true,不否则返回false * 创建人:zhangsg 创建时间:2014-9-9 晚上19:30:05 * * @throws */ public static boolean isEmpty(String s) { return s == null || "".equals(s) || "null".equals(s); } /** * 方法名称: str2StrArray 方法描述: 字符串转换为字符串数组 * * @param str * 字符串 返回类型: 创建人:zhangsg 创建时间:2014-9-9 晚上19:30:05 * @throws */ public static String[] str2StrArray(String str, String splitRegex) { if (isEmpty(str)) { return null; } return str.split(splitRegex); } /** * 方法名称: str2StrArray 方法描述: 用默认的分隔符(,)将字符串转换为字符串数组 返回类型: 字符串 创建人:zhangsg * 创建时间:2014-9-9 晚上19:30:05 * * @throws */ public static String[] str2StrArray(String str) { return str2StrArray(str, ",\\s*"); } public static String nullSafeToString(Object obj) { if (obj == null) { return null; } return obj.toString(); } public static String leftPad(String value, int totalLength) { return StringUtils.leftPad(value, totalLength, "0"); } public static String rightPad(String value, int totalLength) { return StringUtils.rightPad(value, totalLength, "0"); } public static String leftPadForPrincipleEntry(String value) { return StringUtils.leftPad(value, 4, "0"); } public static String getIconImgBig(String img) { String[] nameSuffix = getIconImgNameAndSuffix(img); return nameSuffix[0] + IMG_ICON_BIG + "." + nameSuffix[1]; } public static String getIconImgMedium(String img) { String[] nameSuffix = getIconImgNameAndSuffix(img); return nameSuffix[0] + IMG_ICON_MEDIUM + "." + nameSuffix[1]; } public static String getIconImgSmall(String img) { String[] nameSuffix = getIconImgNameAndSuffix(img); return nameSuffix[0] + IMG_ICON_SMALL + "." + nameSuffix[1]; } private static String[] getIconImgNameAndSuffix(String img) { return img.split("\\."); } public static char ascii2Char(int ASCII) { return (char) ASCII; } public static int char2ASCII(char c) { return (int) c; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to Double } * @file_name: LoanInvestQueryService.java * @user:DING */ public static double ObjectToDoubleUtil(Object obj) { if (obj != null) { return Double.parseDouble(obj.toString()); } return 0; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to Integer } * @file_name: LoanInvestQueryService.java * @user:DING */ public static Integer ObjectToIntegerUtil(Object obj) { if (obj != null) { return Integer.valueOf(obj.toString()); } return 0; } /** * @Title: ObjectToLongUtil * @Description: { Object to Long } * @file_name: LoanInvestQueryService.java * @user:DING */ public static Long ObjectToLongUtil(Object obj) { if (obj != null) { return Long.valueOf(obj.toString()); } return 0l; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to Integer } * @file_name: LoanInvestQueryService.java * @user:DING */ public static Float ObjectToFloatUtil(Object obj) { if (obj != null) { return Float.parseFloat( ObjectToStringUtil(obj) ); } return null; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to Integer } * @file_name: LoanInvestQueryService.java * @user:DING */ public static boolean ObjectToBooleanUtil(Object obj) { if (obj != null && "true".equalsIgnoreCase(obj.toString())) { return true; } return false; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to String } * @file_name: LoanInvestQueryService.java * @user:DING */ public static String ObjectToStringUtil(Object obj) { if (obj != null) { return obj.toString(); } return null; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to Date } * @file_name: LoanInvestQueryService.java * @user:DING */ public static Date ObjectToDateUtil(Object obj) { if (obj != null) { return DateUtil.formatDateTimeStrToDate(obj.toString()); } return null; } /** * @Title: ObjectToDoubleUtil * @Description: { Object to Date } * @file_name: LoanInvestQueryService.java * @user:DING */ public static int IntegerTointUtil(Integer obj) { if (obj != null) { return obj; } return 0; } /** * @Title: ObjectToShortUtil * @Description: { Object to String } * @file_name: LoanInvestQueryService.java * @user:DING */ public static Short ObjectToShortUtil(Object obj) { if (obj != null) { return new Short(ObjectToStringUtil(obj)); } return null; } /** * @Title: IntegerToShortUtil * @Description: { Object to Integer } * @file_name: LoanInvestQueryService.java * @user:DING */ public static Short IntegerToShortUtil(Integer obj) { if (obj != null) { return Short.parseShort(""+obj); } return null; } /** * @Title: doubleBigDecimal * @Description: { 百分比 } * @file_name: StringUtil.java * @user:DING */ public static double getEpercentage(double obj) { BigDecimal b = new BigDecimal(obj * 100); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return f1; } /** * @Title: doubleBigDecimal * @Description: { 百分比 } * @file_name: StringUtil.java * @user:DING */ public static double getYieldRate(double obj) { BigDecimal b = new BigDecimal(obj); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); return f1; } // 根据年月取得 月的天数 public static int getDayByYearAndMonth(int year, int month) { SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM"); Calendar rightNow = Calendar.getInstance(); try { rightNow.setTime(simpleDate.parse(year + "-" + month)); } catch (ParseException e) { e.printStackTrace(); } return rightNow.getActualMaximum(Calendar.DAY_OF_MONTH);// 根据年月 获取月份天数 } public static String getMaskedNickName(String nickName) { if(StringUtils.isBlank(nickName)){ return ""; } int length = nickName.length(); String first = nickName.substring(0, 1); String last = nickName.substring(length - 1); return first + "***" + last; } public static String getMaskedRealName(String realName){ if(StringUtils.isNotBlank(realName)){ int length = realName.length(); StringBuffer displayMaskedName = new StringBuffer(); for (int i = 0; i < length - 1; i++) { displayMaskedName.append("*"); } displayMaskedName.append(realName.substring(length - 1)); return displayMaskedName.toString(); } return ""; } public static String getMaskedNickNameSt(String nickName){ if(StringUtils.isNotBlank(nickName)){ int length = nickName.length(); StringBuffer displayMaskedName = new StringBuffer(); if(length>1){ displayMaskedName.append(nickName.substring(0,1)); for (int i = 0; i < length-1; i++) { displayMaskedName.append("*"); } }else{ return nickName; } return displayMaskedName.toString(); } return ""; } public static String getShortBankCardNum(String bankCardNum) { if(StringUtils.isBlank(bankCardNum)){ return ""; } int length = bankCardNum.length(); int lengthxin = length-5; int zhengs = lengthxin/4; StringBuffer sbf = new StringBuffer(); for(int i=0;i<zhengs;i++){ sbf.append("**** "); } int yushu = lengthxin%4; if(yushu!=0){ for(int i=0;i<yushu;i++){ sbf.append("*"); } } String first = bankCardNum.substring(0, 2)+"** "; String last = " *"+bankCardNum.substring(length - 3); return first + sbf.toString()+ last; } //String to UpperCase public static String str2UpperCase(String str) { if(StringUtils.isBlank(str)){ return ""; } return str.toUpperCase(); } //String to LowerCase public static String str2LowerCase(String str) { if(StringUtils.isBlank(str)){ return ""; } return str.toLowerCase(); } /** * 转换返回值类型为UTF-8格式. * @param is * @return */ public static String convertStreamToString(InputStream is) { StringBuilder sb1 = new StringBuilder(); byte[] bytes = new byte[4096]; int size = 0; try { while ((size = is.read(bytes)) > 0) { String str = new String(bytes, 0, size, "UTF-8"); sb1.append(str); } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return sb1.toString(); } //字符过滤 public static String charactersFilter(String st,String seqNum){ StringBuffer sbf = new StringBuffer(); if(st.contains("<")){ sbf.append(st.substring(0,st.indexOf("<"))); String[] stt = st.split("<"); for(String s : stt){ if(s.contains(">")){ String[] stts = s.split(">"); if(stts.length==2){ sbf.append(stts[1]); String sa = stts[0]; if(sa.contains("href") && StringUtils.isEmpty(seqNum)){ String[] sb = sa.split("/"); seqNum = sb[sb.length-1]; System.out.println(seqNum); } } } } }else{ sbf.append(st); } return sbf.toString(); } //字符过滤 public static String charactersFilter(String st){ StringBuffer sbf = new StringBuffer(); if(st.contains("<")){ sbf.append(st.substring(0,st.indexOf("<"))); String[] stt = st.split("<"); for(String s : stt){ if(s.contains(">")){ String[] stts = s.split(">"); if(stts.length==2){ sbf.append(stts[1]); } } } }else{ sbf.append(st); } return sbf.toString(); } //IOS 在获取图片路径时 需要把 含有"\" 转换成"/" public static String replaceAvatarImg(String avatarImg){ if(StringUtil.notEmpty(avatarImg)){ if(avatarImg.contains("\\")){ avatarImg = avatarImg.replace("\\", "/"); } } return avatarImg; } public static String setStringLike(String st){ if(StringUtil.notEmpty(st)){ return "'%"+st+"%'"; } return st; } //究极去重方式 public static String[] array_unique(String[] a) { Set<String> set = new HashSet<String>(); set.addAll(Arrays.asList(a)); return set.toArray(new String[0]); } }