Commit 5b04f123 authored by 张永's avatar 张永

加个方法

parent 793adda4
package com.egolm.common; package com.egolm.common;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.Reader; import java.io.Reader;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.io.Writer; import java.io.Writer;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Comparator; import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.TreeMap; import java.util.TreeMap;
import java.util.UUID; import java.util.UUID;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.crypto.Mac; import javax.crypto.Mac;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.binary.Hex;
import com.egolm.common.exception.CharsetException; import com.egolm.common.exception.CharsetException;
import com.egolm.common.exception.MD5Exception; import com.egolm.common.exception.MD5Exception;
import com.egolm.common.exception.PluginException; import com.egolm.common.exception.PluginException;
import com.egolm.common.exception.ReflectException; import com.egolm.common.exception.ReflectException;
import com.egolm.common.exception.SHA1Exception; import com.egolm.common.exception.SHA1Exception;
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/** /**
* *
* @Description 字符串工具类 * @Description 字符串工具类
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
*/ */
public class StringUtil { public class StringUtil {
public static String join(Map<String, Object> map, String sign, String before, String after, String joinKey) { public static String join(Map<String, Object> map, String sign, String before, String after, String joinKey) {
sign = sign == null ? "" : sign; sign = sign == null ? "" : sign;
before = before == null ? "" : before; before = before == null ? "" : before;
after = after == null ? "" : after; after = after == null ? "" : after;
List<String> strs = new ArrayList<String>(); List<String> strs = new ArrayList<String>();
for(String key : map.keySet()) { for(String key : map.keySet()) {
StringBuffer sbuffer = new StringBuffer(); StringBuffer sbuffer = new StringBuffer();
sbuffer.append(key).append(joinKey); sbuffer.append(key).append(joinKey);
sbuffer.append(StringUtil.format(map.get(key))); sbuffer.append(StringUtil.format(map.get(key)));
strs.add(sbuffer.toString()); strs.add(sbuffer.toString());
} }
return StringUtil.join(sign, before, after, strs); return StringUtil.join(sign, before, after, strs);
} }
public static String join(String sign, Collection<String> strs) { public static String join(String sign, Collection<String> strs) {
return join(sign, "", "", strs.toArray(new String[strs.size()])); return join(sign, "", "", strs.toArray(new String[strs.size()]));
} }
/** /**
* *
* @Description 连接字符串 * @Description 连接字符串
* @param sign 连接符 * @param sign 连接符
* @param before 前置字符串 * @param before 前置字符串
* @param strs 要连接的字符串集合 * @param strs 要连接的字符串集合
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String join(String sign, String before, Collection<String> strs) { public static String join(String sign, String before, Collection<String> strs) {
return join(sign, before, "", strs.toArray(new String[strs.size()])); return join(sign, before, "", strs.toArray(new String[strs.size()]));
} }
/** /**
* *
* @Description 连接字符串 * @Description 连接字符串
* @param sign 连接符 * @param sign 连接符
* @param before 前置字符串 * @param before 前置字符串
* @param after 后置字符串 * @param after 后置字符串
* @param strs 要连接的字符串集合 * @param strs 要连接的字符串集合
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月24日 * @date 2016年4月24日
* @since 2016年4月24日 * @since 2016年4月24日
* @return String * @return String
* @throws * @throws
*/ */
public static String join(String sign, String before, String after, String... strs) { public static String join(String sign, String before, String after, String... strs) {
return StringUtil.join(sign, before, after, "", strs); return StringUtil.join(sign, before, after, "", strs);
} }
public static String join(String sign, String before, String after, String def, String[] strs) { public static String join(String sign, String before, String after, String def, String[] strs) {
if (strs == null || strs.length == 0 || StringUtil.isEmptyAll((Object[])strs)) { if (strs == null || strs.length == 0 || StringUtil.isEmptyAll((Object[])strs)) {
return StringUtil.isEmpty(def) ? "" : def; return StringUtil.isEmpty(def) ? "" : def;
} else { } else {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
for (int i = 0; i < strs.length; i++) { for (int i = 0; i < strs.length; i++) {
String str = String.valueOf(strs[i]); String str = String.valueOf(strs[i]);
sb.append((i == 0 && before != null) ? before : "").append(str == null ? "" : str).append(i < strs.length - 1 ? (sign == null ? "" : sign) : "").append((i == strs.length - 1 && after != null) ? after : ""); sb.append((i == 0 && before != null) ? before : "").append(str == null ? "" : str).append(i < strs.length - 1 ? (sign == null ? "" : sign) : "").append((i == strs.length - 1 && after != null) ? after : "");
} }
return String.valueOf(sb); return String.valueOf(sb);
} }
} }
/** /**
* *
* @Description 连接字符串 * @Description 连接字符串
* @param sign 连接符 * @param sign 连接符
* @param before 前置字符串 * @param before 前置字符串
* @param after 后置字符串 * @param after 后置字符串
* @param strs 要连接的字符串的集合 * @param strs 要连接的字符串的集合
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String join(String sign, String before, String after, Collection<String> strs) { public static String join(String sign, String before, String after, Collection<String> strs) {
return StringUtil.join(sign, before, after, strs.toArray(new String[strs.size()])); return StringUtil.join(sign, before, after, strs.toArray(new String[strs.size()]));
} }
public static String join(String sign, String before, String after, String def, Collection<String> strs) { public static String join(String sign, String before, String after, String def, Collection<String> strs) {
return StringUtil.join(sign, before, after, def, strs.toArray(new String[strs.size()])); return StringUtil.join(sign, before, after, def, strs.toArray(new String[strs.size()]));
} }
/** /**
* *
* @Description 连接字符串 * @Description 连接字符串
* @param str 要链接的字符串 * @param str 要链接的字符串
* @param sign 连接符 * @param sign 连接符
* @param count 链接的次数 * @param count 链接的次数
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String join(String str, String sign, int count) { public static String join(String str, String sign, int count) {
return StringUtil.join(str, sign, count, "", ""); return StringUtil.join(str, sign, count, "", "");
} }
/** /**
* *
* @Description 连接字符串 * @Description 连接字符串
* @param str 要链接的字符串 * @param str 要链接的字符串
* @param sign 连接符 * @param sign 连接符
* @param count 链接次数 * @param count 链接次数
* @param before 前置字符串 * @param before 前置字符串
* @param after 后置字符串 * @param after 后置字符串
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String join(String str, String sign, int count, String before, String after) { public static String join(String str, String sign, int count, String before, String after) {
if (str == null || count == 0) { if (str == null || count == 0) {
return ""; return "";
} else { } else {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
sb.append(i == 0 && before != null ? before : "").append(str).append(i < count - 1 ? (sign == null ? "" : sign) : "").append(i == count - 1 && after != null ? after : ""); sb.append(i == 0 && before != null ? before : "").append(str).append(i < count - 1 ? (sign == null ? "" : sign) : "").append(i == count - 1 && after != null ? after : "");
} }
return String.valueOf(sb); return String.valueOf(sb);
} }
} }
/** /**
* *
* @Description 判断字符串数组是否包含特定字符串 * @Description 判断字符串数组是否包含特定字符串
* @param arry 要判断的字符串数组 * @param arry 要判断的字符串数组
* @param arg 要找的目标字符串 * @param arg 要找的目标字符串
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean contains(String[] arry, String arg) { public static boolean contains(String[] arry, String arg) {
for (String str : arry) { for (String str : arry) {
if (arg != null && arg.equals(str)) { if (arg != null && arg.equals(str)) {
return true; return true;
} else if (arg == null && str == null) { } else if (arg == null && str == null) {
return true; return true;
} }
} }
return false; return false;
} }
/** /**
* *
* @Description 判断字符串是否是整数 * @Description 判断字符串是否是整数
* @param val * @param val
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean isInt(String val) { public static boolean isInt(String val) {
String regex = "^-?\\d+$"; String regex = "^-?\\d+$";
return matcher(val, regex); return matcher(val, regex);
} }
/** /**
* *
* @Description 判断字符串是否是浮点数 * @Description 判断字符串是否是浮点数
* @param val * @param val
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean isFloat(String val) { public static boolean isFloat(String val) {
String regex = "^(-?\\d+)(\\.\\d+)?$"; String regex = "^(-?\\d+)(\\.\\d+)?$";
return matcher(val, regex); return matcher(val, regex);
} }
/** /**
* *
* @Description 判断字符串是否是日期 * @Description 判断字符串是否是日期
* @param val * @param val
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean isDate(String val) { public static boolean isDate(String val) {
String regex = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1][0-9])|([2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"; String regex = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1][0-9])|([2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";
return matcher(val, regex); return matcher(val, regex);
} }
/** /**
* *
* @Description 判断字符串是否是IP地址 * @Description 判断字符串是否是IP地址
* @param ip * @param ip
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean isIp(String ip) { public static boolean isIp(String ip) {
String regex = "(2[5][0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})"; String regex = "(2[5][0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})";
return matcher(ip, regex); return matcher(ip, regex);
} }
/** /**
* *
* @Description 正则表达式验证字符串 * @Description 正则表达式验证字符串
* @param val 目标字符串 * @param val 目标字符串
* @param regex 正则表达式 * @param regex 正则表达式
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean matcher(String val, String regex) { public static boolean matcher(String val, String regex) {
Pattern p = Pattern.compile(regex); Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(val); Matcher m = p.matcher(val);
return m.matches(); return m.matches();
} }
/** /**
* 只要有一个不为空,就返回true * 只要有一个不为空,就返回true
* @param objs * @param objs
* @return * @return
*/ */
public static boolean isNotEmptyOne(Object... objs) { public static boolean isNotEmptyOne(Object... objs) {
for(Object obj : objs) { for(Object obj : objs) {
if(StringUtil.isNotEmpty(obj)) { if(StringUtil.isNotEmpty(obj)) {
return true; return true;
} }
} }
return false; return false;
} }
public static boolean isEmptyAll(Object... objs) { public static boolean isEmptyAll(Object... objs) {
for(Object obj : objs) { for(Object obj : objs) {
if(StringUtil.isNotEmpty(obj)) { if(StringUtil.isNotEmpty(obj)) {
return false; return false;
} }
} }
return true; return true;
} }
/** /**
* *
* @Description 判断字符串是否为空 * @Description 判断字符串是否为空
* @param obj * @param obj
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean obj==null或obj==""返回true否则返回false * @return boolean obj==null或obj==""返回true否则返回false
* @throws * @throws
*/ */
public static boolean isEmpty(Object obj) { public static boolean isEmpty(Object obj) {
if (obj == null || "".equals(String.valueOf(obj))) { if (obj == null || "".equals(String.valueOf(obj))) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
/** /**
* *
* @Description 判断字符串是否是undefined或null * @Description 判断字符串是否是undefined或null
* @param objs * @param objs
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean 全部对象都不是null和"undefined"和"null"返回true否则返回false * @return boolean 全部对象都不是null和"undefined"和"null"返回true否则返回false
* @throws * @throws
*/ */
public static boolean isNotUndefinedAndNull(Object... objs) { public static boolean isNotUndefinedAndNull(Object... objs) {
if (objs == null || objs.length == 0) { if (objs == null || objs.length == 0) {
return false; return false;
} else { } else {
for (Object obj : objs) { for (Object obj : objs) {
String objStr = String.valueOf(obj).toLowerCase(); String objStr = String.valueOf(obj).toLowerCase();
if (obj == null || "undefined".equals(objStr) || "null".equals(objStr)) { if (obj == null || "undefined".equals(objStr) || "null".equals(objStr)) {
return false; return false;
} }
} }
return true; return true;
} }
} }
/** /**
* *
* @Description 判断对象是否是undefined或null * @Description 判断对象是否是undefined或null
* @param obj * @param obj
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean obj==null,obj=="undefined",obj=="null" 返回true否则返回false * @return boolean obj==null,obj=="undefined",obj=="null" 返回true否则返回false
* @throws * @throws
*/ */
public static boolean isUndefinedOrNull(Object obj) { public static boolean isUndefinedOrNull(Object obj) {
String objStr = String.valueOf(obj).toLowerCase(); String objStr = String.valueOf(obj).toLowerCase();
if (obj == null || "undefined".equals(objStr) || "null".equals(objStr)) { if (obj == null || "undefined".equals(objStr) || "null".equals(objStr)) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
/** /**
* *
* @Description 判断一个或多个字符串是否非空 * @Description 判断一个或多个字符串是否非空
* @param objs * @param objs
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean 全部字符串都不为null和空字符串返回true否则返回false * @return boolean 全部字符串都不为null和空字符串返回true否则返回false
* @throws * @throws
*/ */
public static boolean isNotEmpty(Object... objs) { public static boolean isNotEmpty(Object... objs) {
if (objs == null || objs.length == 0) { if (objs == null || objs.length == 0) {
return false; return false;
} else { } else {
for (Object obj : objs) { for (Object obj : objs) {
if (obj == null || "".equals(String.valueOf(obj))) { if (obj == null || "".equals(String.valueOf(obj))) {
return false; return false;
} }
} }
return true; return true;
} }
} }
/** /**
* *
* @Description 判断一个字符串是否是空白的(包括空格、换行、制表符) * @Description 判断一个字符串是否是空白的(包括空格、换行、制表符)
* @param obj * @param obj
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean * @return boolean
* @throws * @throws
*/ */
public static boolean isBlank(Object obj) { public static boolean isBlank(Object obj) {
if (obj == null || String.valueOf(obj).trim().length() == 0) { if (obj == null || String.valueOf(obj).trim().length() == 0) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
/** /**
* *
* @Description 判断一个或多个字符串是否是空白的(包括空格、换行、制表符) * @Description 判断一个或多个字符串是否是空白的(包括空格、换行、制表符)
* @param objs * @param objs
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return boolean 全部不为空白时返回true 否则只要有一个是空白的就返回false * @return boolean 全部不为空白时返回true 否则只要有一个是空白的就返回false
* @throws * @throws
*/ */
public static boolean isNotBlank(Object... objs) { public static boolean isNotBlank(Object... objs) {
if (objs == null || objs.length == 0) { if (objs == null || objs.length == 0) {
return false; return false;
} else { } else {
for (Object obj : objs) { for (Object obj : objs) {
if (obj == null || String.valueOf(obj).trim().length() == 0) { if (obj == null || String.valueOf(obj).trim().length() == 0) {
return false; return false;
} }
} }
return true; return true;
} }
} }
/** /**
* *
* @Description 截取字符串 * @Description 截取字符串
* @param string 被截取的字符串 * @param string 被截取的字符串
* @param from 开始点子串 * @param from 开始点子串
* @param to 结束点子串 * @param to 结束点子串
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String substring(String string, String from, String to) { public static String substring(String string, String from, String to) {
return string.substring(string.indexOf(from) + from.length(), string.lastIndexOf(to)); return string.substring(string.indexOf(from) + from.length(), string.lastIndexOf(to));
} }
/** /**
* *
* @Description 获取字符串的字节长度 * @Description 获取字符串的字节长度
* @param string * @param string
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return int * @return int
* @throws * @throws
*/ */
public static int bytesLength(String string) { public static int bytesLength(String string) {
int length = 0; int length = 0;
for (int i = 0; i < string.length(); i++) { for (int i = 0; i < string.length(); i++) {
if (new String(string.charAt(i) + "").getBytes().length > 1) { if (new String(string.charAt(i) + "").getBytes().length > 1) {
length += 2; length += 2;
} else { } else {
length += 1; length += 1;
} }
} }
return length / 2; return length / 2;
} }
/** /**
* *
* @Description 获取字符的ASCII码 * @Description 获取字符的ASCII码
* @param c * @param c
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return int * @return int
* @throws * @throws
*/ */
public static int toAscii(char c) { public static int toAscii(char c) {
try { try {
byte[] bytes = String.valueOf(c).getBytes("gb2312"); byte[] bytes = String.valueOf(c).getBytes("gb2312");
if (bytes.length == 1) { if (bytes.length == 1) {
return bytes[0]; return bytes[0];
} else if (bytes.length == 2) { } else if (bytes.length == 2) {
int hightByte = 256 + bytes[0]; int hightByte = 256 + bytes[0];
int lowByte = 256 + bytes[1]; int lowByte = 256 + bytes[1];
return (256 * hightByte + lowByte) - 256 * 256; return (256 * hightByte + lowByte) - 256 * 256;
} else { } else {
return 0; return 0;
} }
} catch (Exception e) { } catch (Exception e) {
throw new ReflectException(e); throw new ReflectException(e);
} }
} }
/** /**
* *
* @Description 获取汉字词组拼音简写 * @Description 获取汉字词组拼音简写
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String 返回小写拼音 * @return String 返回小写拼音
* @throws * @throws
*/ */
public static String simplePinyin(String str) { public static String simplePinyin(String str) {
if(StringUtil.isNotEmpty(str)) { if(StringUtil.isNotEmpty(str)) {
StringBuffer sbuffer = new StringBuffer(); StringBuffer sbuffer = new StringBuffer();
for(char c : str.toCharArray()) { for(char c : str.toCharArray()) {
sbuffer.append(StringUtil.firstPinyin(String.valueOf(c))); sbuffer.append(StringUtil.firstPinyin(String.valueOf(c)));
} }
return String.valueOf(sbuffer); return String.valueOf(sbuffer);
} else { } else {
return ""; return "";
} }
} }
/** /**
* *
* @Description 获取汉字词组拼音简写 * @Description 获取汉字词组拼音简写
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String 返回大写拼音 * @return String 返回大写拼音
* @throws * @throws
*/ */
public static String SimplePinyin(String str) { public static String SimplePinyin(String str) {
return simplePinyin(str).toUpperCase(); return simplePinyin(str).toUpperCase();
} }
public static String[] PinyinKAnalyzer(String str, Integer minLength, Integer maxLength) { public static String[] PinyinKAnalyzer(String str, Integer minLength, Integer maxLength) {
List<String> list = new ArrayList<String>(); List<String> list = new ArrayList<String>();
for(int i = 0; i < str.length(); i++) { for(int i = 0; i < str.length(); i++) {
for(int n = i; n < str.length(); n++) { for(int n = i; n < str.length(); n++) {
Integer length = n+1-i; Integer length = n+1-i;
if(length >= minLength && maxLength >= length) { if(length >= minLength && maxLength >= length) {
list.add(str.substring(i, n+1)); list.add(str.substring(i, n+1));
} }
} }
} }
return list.toArray(new String[list.size()]); return list.toArray(new String[list.size()]);
} }
/** /**
* *
* @Description 获取中文字符串的全拼 * @Description 获取中文字符串的全拼
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String 返回小写拼音 * @return String 返回小写拼音
* @throws * @throws
*/ */
public static String fullPinyin(String src) { public static String fullPinyin(String src) {
char[] t1 = null; char[] t1 = null;
t1 = src.toCharArray(); t1 = src.toCharArray();
String[] t2 = new String[t1.length]; String[] t2 = new String[t1.length];
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat(); HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE); t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE); t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V); t3.setVCharType(HanyuPinyinVCharType.WITH_V);
String t4 = ""; String t4 = "";
int t0 = t1.length; int t0 = t1.length;
try { try {
for (int i = 0; i < t0; i++) { for (int i = 0; i < t0; i++) {
if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) { if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3); t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
t4 += t2[0]; t4 += t2[0];
} else { } else {
t4 += java.lang.Character.toString(t1[i]); t4 += java.lang.Character.toString(t1[i]);
} }
} }
return t4; return t4;
} catch (BadHanyuPinyinOutputFormatCombination e1) { } catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace(); e1.printStackTrace();
} }
return t4; return t4;
} }
/** /**
* *
* @Description 获取中文字符串的全拼 * @Description 获取中文字符串的全拼
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String 返回大写拼音 * @return String 返回大写拼音
* @throws * @throws
*/ */
public static String FullPinyin(String str) { public static String FullPinyin(String str) {
return fullPinyin(str).toUpperCase(); return fullPinyin(str).toUpperCase();
} }
/** /**
* *
* @Description 获取汉子拼音首字母 * @Description 获取汉子拼音首字母
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String 返回小写首拼音字母 * @return String 返回小写首拼音字母
* @throws * @throws
*/ */
public static String firstPinyin(String str) { public static String firstPinyin(String str) {
try { try {
return String.valueOf(fullPinyin(str).charAt(0)); return String.valueOf(fullPinyin(str).charAt(0));
} catch (Exception e) { } catch (Exception e) {
return ""; return "";
} }
} }
/** /**
* *
* @Description 获取汉子拼音首字母 * @Description 获取汉子拼音首字母
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String 返回大写首拼音字母 * @return String 返回大写首拼音字母
* @throws * @throws
*/ */
public static String FirstPinyin(String str) { public static String FirstPinyin(String str) {
return firstPinyin(str).toUpperCase(); return firstPinyin(str).toUpperCase();
} }
/** /**
* @throws IOException * @throws IOException
* *
* @Description 从BufferedReader对象中读取字符串或文本 * @Description 从BufferedReader对象中读取字符串或文本
* @param reader * @param reader
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String read(Reader reader) throws IOException { public static String read(Reader reader) throws IOException {
BufferedReader br = null; BufferedReader br = null;
br = new BufferedReader(reader); br = new BufferedReader(reader);
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
String line = null; String line = null;
while ((line = br.readLine()) != null) { while ((line = br.readLine()) != null) {
sb.append(line + System.getProperty("line.separator")); sb.append(line + System.getProperty("line.separator"));
} }
return sb.toString(); return sb.toString();
} }
/** /**
* 从输入流总读取字符串 * 从输入流总读取字符串
* @param is * @param is
* @return * @return
* @throws IOException * @throws IOException
*/ */
public static String read(InputStream is) throws IOException { public static String read(InputStream is) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String str = read(br); String str = read(br);
return str; return str;
} }
/** /**
* 将文本写入的输出流 * 将文本写入的输出流
* @param writer * @param writer
* @param text * @param text
*/ */
public static void write(Writer writer, String text) { public static void write(Writer writer, String text) {
PrintWriter printWriter = new PrintWriter(writer); PrintWriter printWriter = new PrintWriter(writer);
printWriter.append(text); printWriter.append(text);
printWriter.flush(); printWriter.flush();
} }
/** /**
* *
* @Description 首字母大写 * @Description 首字母大写
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String upperFirst(String str) { public static String upperFirst(String str) {
char[] ch = str.toCharArray(); char[] ch = str.toCharArray();
if (ch[0] >= 'a' && ch[0] <= 'z') { if (ch[0] >= 'a' && ch[0] <= 'z') {
ch[0] = (char) (ch[0] - 32); ch[0] = (char) (ch[0] - 32);
} }
return new String(ch); return new String(ch);
} }
/** /**
* *
* @Description 首字母小写 * @Description 首字母小写
* @param str * @param str
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String lowerFirst(String str) { public static String lowerFirst(String str) {
char[] chars = new char[1]; char[] chars = new char[1];
chars[0] = str.charAt(0); chars[0] = str.charAt(0);
String temp = new String(chars); String temp = new String(chars);
if (chars[0] >= 'A' && chars[0] <= 'Z') { if (chars[0] >= 'A' && chars[0] <= 'Z') {
return str.replaceFirst(temp, temp.toLowerCase()); return str.replaceFirst(temp, temp.toLowerCase());
} }
return str; return str;
} }
/** /**
* *
* @Description 返回一个非空的字符串 * @Description 返回一个非空的字符串
* @param strings * @param strings
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月26日 * @date 2016年4月26日
* @since 2016年4月26日 * @since 2016年4月26日
* @return String * @return String
* @throws * @throws
*/ */
public static String getNotNull(String... strings) { public static String getNotNull(String... strings) {
for(String string : strings) { for(String string : strings) {
if(string != null) { if(string != null) {
return string; return string;
} }
} }
throw new PluginException("NotNull Data is null"); throw new PluginException("NotNull Data is null");
} }
/** /**
* *
* @Description 返回一个非空的字符串 * @Description 返回一个非空的字符串
* @param strings * @param strings
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月26日 * @date 2016年4月26日
* @since 2016年4月26日 * @since 2016年4月26日
* @return String * @return String
* @throws * @throws
*/ */
public static String getNotEmpty(String... strings) { public static String getNotEmpty(String... strings) {
for(String string : strings) { for(String string : strings) {
if(StringUtil.isNotEmpty(string)) { if(StringUtil.isNotEmpty(string)) {
return string; return string;
} }
} }
throw new PluginException("NotEmpty Data is null"); throw new PluginException("NotEmpty Data is null");
} }
/** /**
* *
* @Description 返回一个非空的字符串 * @Description 返回一个非空的字符串
* @param strings * @param strings
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月26日 * @date 2016年4月26日
* @since 2016年4月26日 * @since 2016年4月26日
* @return String * @return String
* @throws * @throws
*/ */
public static String getNotBlank(String... strings) { public static String getNotBlank(String... strings) {
for(String string : strings) { for(String string : strings) {
if(StringUtil.isNotBlank(string)) { if(StringUtil.isNotBlank(string)) {
return string; return string;
} }
} }
throw new PluginException("NotBlank Data is null"); throw new PluginException("NotBlank Data is null");
} }
/** /**
* *
* @Description 返回一个非空的字符串 * @Description 返回一个非空的字符串
* @param strings * @param strings
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月26日 * @date 2016年4月26日
* @since 2016年4月26日 * @since 2016年4月26日
* @return String * @return String
* @throws * @throws
*/ */
public static String getNotUndefinedAndNull(String... strings) { public static String getNotUndefinedAndNull(String... strings) {
for(String string : strings) { for(String string : strings) {
if(StringUtil.isNotUndefinedAndNull(string)) { if(StringUtil.isNotUndefinedAndNull(string)) {
return string; return string;
} }
} }
throw new PluginException("UndefinedAndNull Data is null"); throw new PluginException("UndefinedAndNull Data is null");
} }
public static String format(Object obj) { public static String format(Object obj) {
if(obj == null) { if(obj == null) {
return null; return null;
} }
if(obj instanceof Date) { if(obj instanceof Date) {
return DateUtil.format((Date)obj); return DateUtil.format((Date)obj);
} else { } else {
return String.valueOf(obj); return String.valueOf(obj);
} }
} }
public static String formatLength(Integer nNo, String format) { public static String formatLength(Integer nNo, String format) {
return formatLength(String.valueOf(nNo), format); return formatLength(String.valueOf(nNo), format);
} }
public static String formatLength(Long nNo, String format) { public static String formatLength(Long nNo, String format) {
return formatLength(String.valueOf(nNo), format); return formatLength(String.valueOf(nNo), format);
} }
public static String formatLength(String sNo, String format) { public static String formatLength(String sNo, String format) {
Integer end = (format.length() > sNo.length() ? (format.length() - sNo.length()) : 0); Integer end = (format.length() > sNo.length() ? (format.length() - sNo.length()) : 0);
return format.substring(0, end) + sNo; return format.substring(0, end) + sNo;
} }
public static String toJson(Object object) { public static String toJson(Object object) {
return GsonUtil.toJson(object); return GsonUtil.toJson(object);
} }
public static String trim(String string, String... strs) { public static String trim(String string, String... strs) {
String tmp = string; String tmp = string;
for(String str : strs) { for(String str : strs) {
while(tmp.startsWith(str)) { while(tmp.startsWith(str)) {
tmp = tmp.substring(1); tmp = tmp.substring(1);
} }
while(tmp.endsWith(str)) { while(tmp.endsWith(str)) {
tmp = tmp.substring(0, tmp.length() - 1); tmp = tmp.substring(0, tmp.length() - 1);
} }
} }
return tmp; return tmp;
} }
public static String decodeBase64AsString(String base64String) { public static String decodeBase64AsString(String base64String) {
return new String(decodeBase64String(base64String)); return new String(decodeBase64String(base64String));
} }
public static String encodeBase64String(String string) { public static String encodeBase64String(String string) {
return encodeBase64String(string.getBytes()); return encodeBase64String(string.getBytes());
} }
public static String encodeBase64String(byte[] bytes) { public static String encodeBase64String(byte[] bytes) {
return new String(Base64.encodeBase64(bytes)); return new String(Base64.encodeBase64(bytes));
} }
public static String decodeHexAsString(String hexString) { public static String decodeHexAsString(String hexString) {
return new String(decodeHexString(hexString)); return new String(decodeHexString(hexString));
} }
public static String encodeHexString(String string) { public static String encodeHexString(String string) {
return encodeHexString(string.getBytes()); return encodeHexString(string.getBytes());
} }
public static String encodeHexString(byte[] bytes) { public static String encodeHexString(byte[] bytes) {
return Hex.encodeHexString(bytes); return Hex.encodeHexString(bytes);
} }
public static byte[] decodeBase64String(String base64String) { public static byte[] decodeBase64String(String base64String) {
return Base64.decodeBase64(base64String); return Base64.decodeBase64(base64String);
} }
public static byte[] decodeHexString(String hexString) { public static byte[] decodeHexString(String hexString) {
try { try {
return Hex.decodeHex(hexString.toCharArray()); return Hex.decodeHex(hexString.toCharArray());
} catch (DecoderException e) { } catch (DecoderException e) {
throw new CharsetException(e); throw new CharsetException(e);
} }
} }
public static String toSHA1String(String text) { public static String toSHA1String(String text) {
try { try {
MessageDigest messageDigest = MessageDigest.getInstance("SHA1"); MessageDigest messageDigest = MessageDigest.getInstance("SHA1");
messageDigest.update(text.getBytes()); messageDigest.update(text.getBytes());
byte[] bytes = messageDigest.digest(); byte[] bytes = messageDigest.digest();
StringBuffer hexString = new StringBuffer(); StringBuffer hexString = new StringBuffer();
for (int i = 0; i < bytes.length; i++) { for (int i = 0; i < bytes.length; i++) {
String shaHex = Integer.toHexString(bytes[i] & 0xFF); String shaHex = Integer.toHexString(bytes[i] & 0xFF);
if (shaHex.length() < 2) { if (shaHex.length() < 2) {
hexString.append(0); hexString.append(0);
} }
hexString.append(shaHex); hexString.append(shaHex);
} }
return hexString.toString().toUpperCase(); return hexString.toString().toUpperCase();
} catch (Exception e) { } catch (Exception e) {
throw new SHA1Exception(e); throw new SHA1Exception(e);
} }
} }
public static String toHMACSHA1String(String encryptText, String encryptKey) { public static String toHMACSHA1String(String encryptText, String encryptKey) {
try { try {
SecretKey secretKey = new SecretKeySpec(encryptKey.getBytes(), "HmacSHA1"); SecretKey secretKey = new SecretKeySpec(encryptKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance(secretKey.getAlgorithm()); Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey); mac.init(secretKey);
byte[] bs = mac.doFinal(encryptText.getBytes()); byte[] bs = mac.doFinal(encryptText.getBytes());
return Base64.encodeBase64String(bs); return Base64.encodeBase64String(bs);
} catch (Exception e) { } catch (Exception e) {
throw new SHA1Exception(e); throw new SHA1Exception(e);
} }
} }
public static String toMD5HexString(String text) { public static String toMD5HexString(String text) {
try { try {
return StringUtil.encodeHexString(MessageDigest.getInstance("MD5").digest(text.getBytes())).toUpperCase(); return StringUtil.encodeHexString(MessageDigest.getInstance("MD5").digest(text.getBytes())).toUpperCase();
} catch (Exception e) { } catch (Exception e) {
throw new MD5Exception(e); throw new MD5Exception(e);
} }
} }
public static String toMD5Base64String(String text) { public static String toMD5Base64String(String text) {
try { try {
return StringUtil.encodeBase64String(MessageDigest.getInstance("MD5").digest(text.getBytes())); return StringUtil.encodeBase64String(MessageDigest.getInstance("MD5").digest(text.getBytes()));
} catch (Exception e) { } catch (Exception e) {
throw new MD5Exception(e); throw new MD5Exception(e);
} }
} }
public static String getUid() { public static String getUid() {
return UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); return UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
} }
public static String getId(Integer length, String prefix) { public static String getId(Integer length, String prefix) {
if(prefix == null) { if(prefix == null) {
prefix = ""; prefix = "";
} }
if(length == null) { if(length == null) {
length = 32; length = 32;
} }
Integer i = length - prefix.length() - 17; Integer i = length - prefix.length() - 17;
return prefix + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + (i <= 0 ? "" : MathUtil.random(i)); return prefix + DateUtil.format(new Date(), "yyyyMMddHHmmssSSS") + (i <= 0 ? "" : MathUtil.random(i));
} }
public static String getId(String prefix) { public static String getId(String prefix) {
return getId(32, prefix); return getId(32, prefix);
} }
public static String getId(Integer length) { public static String getId(Integer length) {
return getId(length, ""); return getId(length, "");
} }
public static String getId() { public static String getId() {
return getId(32, ""); return getId(32, "");
} }
public static String[] search(String string, String regex) { public static String[] search(String string, String regex) {
return StringUtil.search(string, regex, null); return StringUtil.search(string, regex, null);
} }
public static String[] search(String string, String regex, Integer groupNo) { public static String[] search(String string, String regex, Integer groupNo) {
Pattern pattern = Pattern.compile(regex); Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string); Matcher matcher = pattern.matcher(string);
List<String> list = new ArrayList<String>(); List<String> list = new ArrayList<String>();
while(matcher.find()) { while(matcher.find()) {
if(groupNo != null) { if(groupNo != null) {
list.add(matcher.group(groupNo)); list.add(matcher.group(groupNo));
} else { } else {
list.add(matcher.group(0)); list.add(matcher.group(0));
} }
} }
return list.toArray(new String[list.size()]); return list.toArray(new String[list.size()]);
} }
public static String[] searchNumber(String string) { public static String[] searchNumber(String string) {
List<String> numbers = new ArrayList<String>(); List<String> numbers = new ArrayList<String>();
Pattern pattern = Pattern.compile("[\\d]+(\\.?[\\d]+)?"); Pattern pattern = Pattern.compile("[\\d]+(\\.?[\\d]+)?");
Matcher matcher = pattern.matcher(string); Matcher matcher = pattern.matcher(string);
while(matcher.find()) { while(matcher.find()) {
numbers.add(matcher.group(0)); numbers.add(matcher.group(0));
} }
return numbers.toArray(new String[numbers.size()]); return numbers.toArray(new String[numbers.size()]);
} }
/** /**
* *
* @Description 从BufferedReader对象中读取字符串或文本 * @Description 从BufferedReader对象中读取字符串或文本
* @param reader * @param reader
* @return * @return
* @author 曲欣亮 * @author 曲欣亮
* @date 2016年4月25日 * @date 2016年4月25日
* @since 2016年4月25日 * @since 2016年4月25日
* @return String * @return String
* @throws * @throws
*/ */
public static String read(BufferedReader reader) { public static String read(BufferedReader reader) {
try { try {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
String line = null; String line = null;
while ((line = reader.readLine()) != null) { while ((line = reader.readLine()) != null) {
sb.append(line + System.getProperty("line.separator")); sb.append(line + System.getProperty("line.separator"));
} }
return sb.toString(); return sb.toString();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
return ""; return "";
} }
/** /**
* *
* @Title: doMD5Sign * @Title: doMD5Sign
* @Description: TODO(这里用一句话描述这个方法的作用) * @Description: TODO(这里用一句话描述这个方法的作用)
* @param: @param map * @param: @param map
* @param: @return * @param: @return
* @return: String * @return: String
* @throws * @throws
*/ */
public static String doMD5Sign(Map<String, String> map){ public static String doMD5Sign(Map<String, String> map){
Map<String, String> compMap = new TreeMap<String, String>( Map<String, String> compMap = new TreeMap<String, String>(
new Comparator<String>() { new Comparator<String>() {
public int compare(String obj1, String obj2) { public int compare(String obj1, String obj2) {
return obj1.compareTo(obj2); return obj1.compareTo(obj2);
} }
}); });
for(Entry<String, String> entry : map.entrySet()){ for(Entry<String, String> entry : map.entrySet()){
compMap.put(entry.getKey(), entry.getValue()); compMap.put(entry.getKey(), entry.getValue());
} }
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
for(Entry<String, String> entry : compMap.entrySet()){ for(Entry<String, String> entry : compMap.entrySet()){
sb.append("&"); sb.append("&");
sb.append(entry.getKey()); sb.append(entry.getKey());
sb.append("="); sb.append("=");
sb.append(entry.getValue()); sb.append(entry.getValue());
} }
String s = sb.toString().substring(1); String s = sb.toString().substring(1);
byte[] secretBytes = null; byte[] secretBytes = null;
try { try {
secretBytes = MessageDigest.getInstance("MD5").digest(s.getBytes()); secretBytes = MessageDigest.getInstance("MD5").digest(s.getBytes());
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
String sign = Hex.encodeHexString(secretBytes).toUpperCase(); String sign = Hex.encodeHexString(secretBytes).toUpperCase();
return sign; return sign;
} }
public static String getRandom(int num){ public static String getRandom(int num){
return String.valueOf(Math.random()).substring(2, 2+num); return String.valueOf(Math.random()).substring(2, 2+num);
} }
/** /**
* 获取随机字符串 * 获取随机字符串
* @return * @return
*/ */
public static String getNonceStr() { public static String getNonceStr() {
// 随机数 // 随机数
String currTime = DateUtil.format(new Date(), DateUtil.FMT_YYYYMMddHHMMSS); String currTime = DateUtil.format(new Date(), DateUtil.FMT_YYYYMMddHHMMSS);
// 8位日期 // 8位日期
String strTime = currTime.substring(8, currTime.length()); String strTime = currTime.substring(8, currTime.length());
// 四位随机数 // 四位随机数
String strRandom = getRandom(4) + ""; String strRandom = getRandom(4) + "";
// 10位序列号,可以自行调整。 // 10位序列号,可以自行调整。
return strTime + strRandom; return strTime + strRandom;
} }
public static final String inputStream2String(InputStream in) public static final String inputStream2String(InputStream in)
throws UnsupportedEncodingException, IOException { throws UnsupportedEncodingException, IOException {
if (in == null) if (in == null)
return ""; return "";
StringBuffer out = new StringBuffer(); StringBuffer out = new StringBuffer();
byte[] b = new byte[4096]; byte[] b = new byte[4096];
for (int n; (n = in.read(b)) != -1;) { for (int n; (n = in.read(b)) != -1;) {
out.append(new String(b, 0, n, "UTF-8")); out.append(new String(b, 0, n, "UTF-8"));
} }
return out.toString(); return out.toString();
} }
}
/**
*
* @Description 字节数组转16进制字符串
* @param bytes
* @return
* @author 曲欣亮
* @date 2016年4月25日
* @since 2016年4月25日
* @return String
* @throws
*/
public static String bytesToHex(byte[] bytes) {
return Hex.encodeHexString(bytes);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment