| | |
| | | package org.yeshi.utils;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.io.UnsupportedEncodingException;
|
| | | import java.lang.reflect.Method;
|
| | | import java.security.InvalidKeyException;
|
| | | import java.security.MessageDigest;
|
| | | import java.security.NoSuchAlgorithmException;
|
| | | import java.util.regex.Matcher;
|
| | | import java.util.regex.Pattern;
|
| | |
|
| | | import org.apache.commons.codec.binary.Base64;
|
| | | import org.yeshi.utils.encrypt.HmacUtils;
|
| | |
|
| | | import sun.misc.BASE64Encoder;
|
| | |
|
| | | public class StringUtil {
|
| | |
|
| | | // 判断是否为手机号码
|
| | | public static boolean isMobile(String mobile) {
|
| | |
|
| | | String regex = "^((13[0-9])|(17[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$";
|
| | | Pattern p = Pattern.compile(regex);
|
| | | Matcher m = p.matcher(mobile);
|
| | |
|
| | | if (mobile == null || mobile.equals("") || mobile.length() != 11) {
|
| | |
|
| | | return false;
|
| | |
|
| | | } else {
|
| | | return m.find();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取数字和字母的随机码
|
| | | * |
| | | * @param count
|
| | | * @return
|
| | | */
|
| | | public static String getRandomCode(int count) {
|
| | | String sts = "0123456789abcdefghijklmnopqrsduvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
| | | String code = "";
|
| | | for (int i = 0; i < count; i++) {
|
| | | int p = (int) (Math.random() * 62);
|
| | | code += sts.charAt(p);
|
| | | }
|
| | | return code;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取6位数字验证码
|
| | | * |
| | | * @return
|
| | | */
|
| | | public static String getVerifyCode() {
|
| | | String sts = "0123456789";
|
| | | String code = "";
|
| | | for (int i = 0; i < 6; i++) {
|
| | | int p = (int) (Math.random() * 10);
|
| | | code += sts.charAt(p);
|
| | | }
|
| | | return code;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 判断字符串是否为空
|
| | | * |
| | | * @param text
|
| | | * @return
|
| | | */
|
| | | public static boolean isNullOrEmpty(String text) {
|
| | | if (text == null || text.trim().length() == 0 || text.equalsIgnoreCase("null")) {
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 32为MD5小写加密
|
| | | * |
| | | * @param st
|
| | | * @return
|
| | | */
|
| | | public static String Md5(String st) {
|
| | | try {
|
| | | MessageDigest md = MessageDigest.getInstance("MD5");
|
| | | try {
|
| | | md.update(st.getBytes("UTF-8"));
|
| | | } catch (UnsupportedEncodingException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | byte b[] = md.digest();
|
| | |
|
| | | int i;
|
| | |
|
| | | StringBuffer buf = new StringBuffer("");
|
| | | for (int offset = 0; offset < b.length; offset++) {
|
| | | i = b[offset];
|
| | | if (i < 0)
|
| | | i += 256;
|
| | | if (i < 16)
|
| | | buf.append("0");
|
| | | buf.append(Integer.toHexString(i));
|
| | | }
|
| | | return buf.toString();
|
| | | // LogUtil.i("result: " + buf.toString());// 32λ�ļ���
|
| | | // LogUtil.i("result: " + buf.toString().substring(8,
|
| | | // 24));// 16λ�ļ���
|
| | | } catch (NoSuchAlgorithmException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | public static String MD5Hmac(String st, String key) {
|
| | | try {
|
| | | return HmacUtils.byte2hex(HmacUtils.encryptHMAC(st, key));
|
| | | } catch (InvalidKeyException e) {
|
| | | e.printStackTrace();
|
| | | } catch (NoSuchAlgorithmException e) {
|
| | | e.printStackTrace();
|
| | | } catch (IOException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 将null转为空字符串
|
| | | * |
| | | * @param st
|
| | | * @return
|
| | | */
|
| | | public static String getString(String st) {
|
| | | return isNullOrEmpty(st) ? "" : st;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 将整数转为字符串
|
| | | * |
| | | * @param i
|
| | | * @return
|
| | | */
|
| | | public static String getString(int i) {
|
| | | return getString(i + "");
|
| | | }
|
| | |
|
| | | /**
|
| | | * 将长整形转为字符串
|
| | | * |
| | | * @param i
|
| | | * @return
|
| | | */
|
| | | public static String getString(long i) {
|
| | | return getString(i + "");
|
| | | }
|
| | |
|
| | | /**
|
| | | * 获取电话号码的隐藏格式
|
| | | * |
| | | * @param mobile
|
| | | * @return
|
| | | */
|
| | | public static String getSubMobile(String mobile) {
|
| | | if (!StringUtil.isNullOrEmpty(mobile) && mobile.length() > 10) {
|
| | | return mobile.subSequence(0, 3).toString() + "****" + mobile.subSequence(7, mobile.length()).toString();
|
| | | } else
|
| | | return mobile;
|
| | | }
|
| | |
|
| | | /**
|
| | | * BASE64加密
|
| | | * |
| | | * @param b
|
| | | * @return
|
| | | */
|
| | | @SuppressWarnings("restriction")
|
| | | public static String getBase64FromByte(byte[] b) {
|
| | |
|
| | | String s = null;
|
| | | if (b != null) {
|
| | | s = new BASE64Encoder().encode(b);
|
| | | }
|
| | | return s;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 提取字符串中的所有数字
|
| | | * |
| | | * @param st
|
| | | * @return
|
| | | */
|
| | | public static String getNumberFromString(String st) {
|
| | | String number = "";
|
| | | Pattern p = Pattern.compile("[0-9\\.]+");
|
| | | Matcher m = p.matcher(st);
|
| | |
|
| | | while (m.find()) {
|
| | | number += (m.group() + ",");
|
| | | }
|
| | | return number;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 将字符串转为UTF-8编码
|
| | | * |
| | | * @param resource
|
| | | * @param chactor
|
| | | * @return
|
| | | */
|
| | | public static String getUTF8String(String resource, String chactor) {
|
| | | if (!isNullOrEmpty(resource)) {
|
| | | try {
|
| | | return new String(resource.getBytes(chactor), "UTF-8");
|
| | | } catch (UnsupportedEncodingException e) {
|
| | | // TODO Auto-generated catch block
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | return "";
|
| | | }
|
| | |
|
| | | /**
|
| | | * Base64加密
|
| | | * |
| | | * @param str
|
| | | * @return
|
| | | * @throws Exception
|
| | | */
|
| | | @SuppressWarnings({ "unchecked", "rawtypes" })
|
| | | public static String getBase64String(String str) throws Exception {
|
| | | byte[] input = str.getBytes("UTF-8");
|
| | | Class clazz = Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
|
| | | Method mainMethod = clazz.getMethod("encode", byte[].class);
|
| | | mainMethod.setAccessible(true);
|
| | | Object retObj = mainMethod.invoke(null, new Object[] { input });
|
| | | return (String) retObj;
|
| | | }
|
| | | |
| | |
|
| | | /**
|
| | | * BASE64解密
|
| | | * |
| | | * @param s
|
| | | * @return
|
| | | */
|
| | | public static String getFromBase64(String s) {
|
| | | byte[] b = null;
|
| | | String result = null;
|
| | | if (s != null) {
|
| | | final Base64 base64 = new Base64();
|
| | | try {
|
| | | b = base64.decode(s.getBytes("UTF-8"));
|
| | | result = new String(b, "utf-8");
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | return result;
|
| | | }
|
| | |
|
| | | /**
|
| | | * SHA1加密
|
| | | * |
| | | * @param decript
|
| | | * @return
|
| | | */
|
| | | public static String SHA1(String decript) {
|
| | | try {
|
| | | MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
|
| | | digest.update(decript.getBytes());
|
| | | byte messageDigest[] = digest.digest();
|
| | | // Create Hex String
|
| | | StringBuffer hexString = new StringBuffer();
|
| | | // 字节数组转换�?十六进制 �?
|
| | | for (int i = 0; i < messageDigest.length; i++) {
|
| | | String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
|
| | | if (shaHex.length() < 2) {
|
| | | hexString.append(0);
|
| | | }
|
| | | hexString.append(shaHex);
|
| | | }
|
| | | return hexString.toString();
|
| | |
|
| | | } catch (NoSuchAlgorithmException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | return "";
|
| | | }
|
| | |
|
| | | public static long[] parseLong(String[] arr) {
|
| | | long[] lArr = new long[arr.length];
|
| | | int ii = 0;
|
| | | for (String str : arr) {
|
| | | lArr[ii] = Long.parseLong(str);
|
| | | ii++;
|
| | | }
|
| | | return lArr;
|
| | | }
|
| | |
|
| | | }
|
| | | package org.yeshi.utils; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.lang.reflect.Method; |
| | | import java.security.InvalidKeyException; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.util.List; |
| | | import java.util.regex.Matcher; |
| | | import java.util.regex.Pattern; |
| | | |
| | | import org.apache.commons.codec.binary.Base64; |
| | | import org.yeshi.utils.encrypt.HmacUtils; |
| | | |
| | | import sun.misc.BASE64Encoder; |
| | | |
| | | public class StringUtil { |
| | | |
| | | // 判断是否为手机号码 |
| | | public static boolean isMobile(String mobile) { |
| | | |
| | | String regex = "^((13[0-9])|(17[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$"; |
| | | Pattern p = Pattern.compile(regex); |
| | | Matcher m = p.matcher(mobile); |
| | | |
| | | if (mobile == null || mobile.equals("") || mobile.length() != 11) { |
| | | |
| | | return false; |
| | | |
| | | } else { |
| | | return m.find(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取数字和字母的随机码 |
| | | * |
| | | * @param count |
| | | * @return |
| | | */ |
| | | public static String getRandomCode(int count) { |
| | | String sts = "0123456789abcdefghijklmnopqrsduvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
| | | String code = ""; |
| | | for (int i = 0; i < count; i++) { |
| | | int p = (int) (Math.random() * 62); |
| | | code += sts.charAt(p); |
| | | } |
| | | return code; |
| | | } |
| | | |
| | | /** |
| | | * 获取6位数字验证码 |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getVerifyCode() { |
| | | String sts = "0123456789"; |
| | | String code = ""; |
| | | for (int i = 0; i < 6; i++) { |
| | | int p = (int) (Math.random() * 10); |
| | | code += sts.charAt(p); |
| | | } |
| | | return code; |
| | | } |
| | | |
| | | /** |
| | | * 判断字符串是否为空 |
| | | * |
| | | * @param text |
| | | * @return |
| | | */ |
| | | public static boolean isNullOrEmpty(String text) { |
| | | if (text == null || text.trim().length() == 0 || text.equalsIgnoreCase("null")) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 32为MD5小写加密 |
| | | * |
| | | * @param st |
| | | * @return |
| | | */ |
| | | public static String Md5(String st) { |
| | | try { |
| | | MessageDigest md = MessageDigest.getInstance("MD5"); |
| | | try { |
| | | md.update(st.getBytes("UTF-8")); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | byte b[] = md.digest(); |
| | | |
| | | int i; |
| | | |
| | | StringBuffer buf = new StringBuffer(""); |
| | | for (int offset = 0; offset < b.length; offset++) { |
| | | i = b[offset]; |
| | | if (i < 0) |
| | | i += 256; |
| | | if (i < 16) |
| | | buf.append("0"); |
| | | buf.append(Integer.toHexString(i)); |
| | | } |
| | | return buf.toString(); |
| | | // LogUtil.i("result: " + buf.toString());// 32λ�ļ��� |
| | | // LogUtil.i("result: " + buf.toString().substring(8, |
| | | // 24));// 16λ�ļ��� |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static String MD5Hmac(String st, String key) { |
| | | try { |
| | | return HmacUtils.byte2hex(HmacUtils.encryptHMAC(st, key)); |
| | | } catch (InvalidKeyException e) { |
| | | e.printStackTrace(); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 将null转为空字符串 |
| | | * |
| | | * @param st |
| | | * @return |
| | | */ |
| | | public static String getString(String st) { |
| | | return isNullOrEmpty(st) ? "" : st; |
| | | } |
| | | |
| | | /** |
| | | * 将整数转为字符串 |
| | | * |
| | | * @param i |
| | | * @return |
| | | */ |
| | | public static String getString(int i) { |
| | | return getString(i + ""); |
| | | } |
| | | |
| | | /** |
| | | * 将长整形转为字符串 |
| | | * |
| | | * @param i |
| | | * @return |
| | | */ |
| | | public static String getString(long i) { |
| | | return getString(i + ""); |
| | | } |
| | | |
| | | /** |
| | | * 获取电话号码的隐藏格式 |
| | | * |
| | | * @param mobile |
| | | * @return |
| | | */ |
| | | public static String getSubMobile(String mobile) { |
| | | if (!StringUtil.isNullOrEmpty(mobile) && mobile.length() > 10) { |
| | | return mobile.subSequence(0, 3).toString() + "****" + mobile.subSequence(7, mobile.length()).toString(); |
| | | } else |
| | | return mobile; |
| | | } |
| | | |
| | | /** |
| | | * BASE64加密 |
| | | * |
| | | * @param b |
| | | * @return |
| | | */ |
| | | @SuppressWarnings("restriction") |
| | | public static String getBase64FromByte(byte[] b) { |
| | | |
| | | String s = null; |
| | | if (b != null) { |
| | | s = new BASE64Encoder().encode(b); |
| | | } |
| | | return s; |
| | | } |
| | | |
| | | /** |
| | | * 提取字符串中的所有数字 |
| | | * |
| | | * @param st |
| | | * @return |
| | | */ |
| | | public static String getNumberFromString(String st) { |
| | | String number = ""; |
| | | Pattern p = Pattern.compile("[0-9\\.]+"); |
| | | Matcher m = p.matcher(st); |
| | | |
| | | while (m.find()) { |
| | | number += (m.group() + ","); |
| | | } |
| | | return number; |
| | | } |
| | | |
| | | /** |
| | | * 将字符串转为UTF-8编码 |
| | | * |
| | | * @param resource |
| | | * @param chactor |
| | | * @return |
| | | */ |
| | | public static String getUTF8String(String resource, String chactor) { |
| | | if (!isNullOrEmpty(resource)) { |
| | | try { |
| | | return new String(resource.getBytes(chactor), "UTF-8"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | // TODO Auto-generated catch block |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | /** |
| | | * Base64加密 |
| | | * |
| | | * @param str |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @SuppressWarnings({ "unchecked", "rawtypes" }) |
| | | public static String getBase64String(String str) throws Exception { |
| | | byte[] input = str.getBytes("UTF-8"); |
| | | Class clazz = Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64"); |
| | | Method mainMethod = clazz.getMethod("encode", byte[].class); |
| | | mainMethod.setAccessible(true); |
| | | Object retObj = mainMethod.invoke(null, new Object[] { input }); |
| | | return (String) retObj; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * BASE64解密 |
| | | * |
| | | * @param s |
| | | * @return |
| | | */ |
| | | public static String getFromBase64(String s) { |
| | | byte[] b = null; |
| | | String result = null; |
| | | if (s != null) { |
| | | final Base64 base64 = new Base64(); |
| | | try { |
| | | b = base64.decode(s.getBytes("UTF-8")); |
| | | result = new String(b, "utf-8"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * SHA1加密 |
| | | * |
| | | * @param decript |
| | | * @return |
| | | */ |
| | | public static String SHA1(String decript) { |
| | | try { |
| | | MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1"); |
| | | digest.update(decript.getBytes()); |
| | | byte messageDigest[] = digest.digest(); |
| | | // Create Hex String |
| | | StringBuffer hexString = new StringBuffer(); |
| | | // 字节数组转换�?十六进制 �? |
| | | for (int i = 0; i < messageDigest.length; i++) { |
| | | String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); |
| | | if (shaHex.length() < 2) { |
| | | hexString.append(0); |
| | | } |
| | | hexString.append(shaHex); |
| | | } |
| | | return hexString.toString(); |
| | | |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | public static long[] parseLong(String[] arr) { |
| | | long[] lArr = new long[arr.length]; |
| | | int ii = 0; |
| | | for (String str : arr) { |
| | | lArr[ii] = Long.parseLong(str); |
| | | ii++; |
| | | } |
| | | return lArr; |
| | | } |
| | | |
| | | public static String concat(List list, String sperator) { |
| | | if (list == null) |
| | | return null; |
| | | String str = ""; |
| | | for (Object obj : list) { |
| | | str += obj + sperator; |
| | | } |
| | | if (str.endsWith(sperator)) |
| | | str = str.substring(0, str.length() - sperator.length()); |
| | | return str; |
| | | } |
| | | |
| | | public static String concat(Object[] array, String sperator) { |
| | | if (array == null) |
| | | return null; |
| | | |
| | | String str = ""; |
| | | for (int i = 0; i < array.length; i++) { |
| | | str += array[i] + sperator; |
| | | } |
| | | |
| | | if (str.endsWith(sperator)) |
| | | str = str.substring(0, str.length() - sperator.length()); |
| | | return str; |
| | | } |
| | | |
| | | |
| | | } |