package com.util; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.Writer; import java.lang.reflect.Method; import java.net.InetAddress; import java.net.NetworkInterface; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class Util { /** * ERRORTYPE */ public static final String ERRORTYPE = "TYPE"; /** * ERRORTYPE_ERROR */ public static final String ERRORTYPE_ERROR = "ERROR"; /** * ERRORCODE */ public static final String ERRORCODE = "ERRORCODE"; /** * ERRORINFO */ public static final String ERRORINFO = "ERRORINFO"; /** * GOPAGE */ public static final String GOPAGE = "GOPAGE"; /** * 有效小数 */ public static final int EFFECTIVE = 2; protected static final Log LOG = LogFactory.getLog(Util.class); /** * 移除重复 * * @param arr * 要处理的字符串数 * @return 处理后的字符串数 */ public static String[] removeRepeat(String[] arr) { if (arr == null) { return new String[0]; } else { Map<String, String> map = new HashMap<String, String>(); for (String str : arr) { String strt = map.get(str); if (strt == null) { map.put(str, str); } } List<String> list = new ArrayList<String>(); for (Map.Entry<String, String> entry : map.entrySet()) { list.add(entry.getKey()); } String[] strArr = new String[list.size()]; return list.toArray(strArr); } } /** * 移除重复 * */ public static String removeRepeat(String str) { if (str == null) { return ""; } else { str = str.replaceAll("^,+", ""); str = str.replaceAll(",+$", ""); str = str.replaceAll(",+", ","); StringBuffer buf = new StringBuffer(); for (String strt : removeRepeat(str.split(","))) { buf.append(strt).append(','); } str = removeEnd(buf.toString()); return str; } } /** * 移除开头的逗号 * */ public static String removeBegin(String str) { if (str == null) { return ""; } else { Matcher matcher = Pattern.compile("^,+").matcher(str); str = matcher.replaceAll(""); return str; } } /** * 移除结尾的逗号 * */ public static String removeEnd(String str) { if (str == null) { return ""; } else { Matcher matcher = Pattern.compile(",+$").matcher(str); str = matcher.replaceAll(""); return str; } } /** * 格式化日期 * @param date 日期 * @param pattern 格式 * @return String String */ public static String formatDate(Date date, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern); return format.format(date); } /** * 〈计算两个日期相差的天数〉 * 〈功能详细描述〉 * @param begin 开始日期 * @param end 结束日期 * @return long */ public static long calDays(Date begin, Date end) { long time = end.getTime() - begin.getTime(); long days = time / 24 / 60 / 60 / 1000; return days; } /** * 获取未来第几天的时间yyyy-MM-dd * @param dayNum * @return */ public static String getNextDay(int dayNum){ Calendar cal = Calendar.getInstance(); Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String returnDate =""; try { cal.setTime(date); cal.add(Calendar.DATE, dayNum); returnDate = sdf.format(cal.getTime()); } catch (Exception e) { e.printStackTrace(); } return returnDate; } /** * 格式化日期 * @param str 日期字符串 * @param pattern 格式 * @return Date Date */ public static Date formatDate(String str, String pattern) { Date date = null; try { SimpleDateFormat format = new SimpleDateFormat(pattern); date = format.parse(str); } catch (ParseException e) { date = new Date(); } return date; } /** * 解析字符 * * @param key * key * @param str * str * @return value */ public static String getValue(String key, String str) { if (key == null || str == null) { return ""; } String[] strArr = str.split(","); for (String tempStr : strArr) { if (key.equals(tempStr.split(":")[0])) { return tempStr.split(":")[1]; } } return ""; } /** * 解析字符 * * @param key * key * @param str * str * @return value */ public static int getIntValue(String key, String str) { int result = 0; if (str == null) { return result; } String[] strArr = str.split(","); String value = "0"; for (String tempStr : strArr) { if (key.equals(tempStr.split(":")[0])) { value = tempStr.split(":")[1]; } } try { result = Integer.parseInt(value); } catch (Exception e) { result = 0; } return result; } /** * 解析字符 */ public static String[] getValue(String str) { if (str == null) { return new String[0]; } return str.split(","); } /** * 直接向用户返回指定信息 * * @param response * response * @param msg * void */ public static void returnMsg(HttpServletResponse response, String msg) { Writer out = null; try { out = response.getWriter(); out.write(msg); out.close(); } catch (IOException e) { LOG.error(e); } } /** * * @param str str * @param reg reg * @param newValue newValue * @return String */ public static String replace(String str, String reg, String newValue) { if (!isEmpty(str)) { Matcher matcher = Pattern.compile(reg, Pattern.CASE_INSENSITIVE).matcher(str); str = matcher.replaceAll(newValue); } return str; } /** * * @param str str * @param reg reg * @param newValue newValue * @param param param * @return String */ public static String replace(String str, String reg, String newValue, int param) { if (!isEmpty(str)) { Matcher matcher = Pattern.compile(reg, param).matcher(str); str = matcher.replaceAll(newValue); } return str; } /** * 〈移除字符串中的js代码 * * @param str * str * @return String */ public static String removeScript(String str) { if (str == null || "".equals(str)) { return ""; } int param = Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL; Matcher matcher = Pattern.compile("<script>.*</script>", param).matcher(str); str = matcher.replaceAll(""); return str; } /** * 字符串转成整数 * * @param str * 字符 * @return 数字 */ public static int parseInt(String str) { int result = 0; try { result = Integer.parseInt(str); } catch (Exception e) { result = 0; } return result; } /** * 〈文件重命名〉 * * @param realPath * 文件绝对路径 * @param newName * 新文件名 * @return String */ public static String rename(String realPath, String newName) { File file = new File(realPath); //包含后缀的文件名 String fileName = file.getName(); //不包含后的文件名 String name = fileName.substring(0, fileName.lastIndexOf('.')); //带后的新文件名称 newName = fileName.replace(name, newName); realPath = realPath.replace(fileName, newName); if (file.exists()) { try { if (!file.renameTo(new File(realPath))) { throw new Exception(); } } catch (Exception e) { e.printStackTrace(); } } return newName; } /** * 把数组转换成字符串,并以逗号分隔 * * @param arr * arr * @return 转换结果 */ public static String arrayToString(String[] arr) { if (arr == null) { return ""; } StringBuffer buf = new StringBuffer(); for (String str : arr) { if (str != null && !"".equals(str)) { buf.append(str).append(','); } } String result = buf.toString(); result = result.replaceAll(",$", ""); return result; } /** * 写Excel * * @param response * response * @param file * file */ public static void writeExcel(HttpServletResponse response, File file) { if (file != null && file.exists()) { response.reset(); response.setContentType("application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment; filename=\"" + file.getName() + "\""); InputStream inStream = null; try { inStream = new FileInputStream(file); int len = inStream.read(); while (len != -1) { response.getWriter().write(len); len = inStream.read(); } } catch (Exception e) { e.printStackTrace(); } finally { Util.close(inStream); } } } /** * * @param reg * reg * @param str * str * @return boolean */ public static boolean test(String reg, String str) { Matcher matcher = Pattern.compile(reg).matcher(str); return matcher.find(); } /** *关闭流 * @param ins void */ public static void close(InputStream ins) { if (ins != null) { try { ins.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * 关闭流 * @param ous void */ public static void close(OutputStream ous) { if (ous != null) { try { ous.close(); } catch (IOException e) { e.printStackTrace(); } } } /** * * 〈重新组装查询条件〉 * 〈如果查询条件包含"_"就在"_"之前加上转义字符"/"〉 * @param queryCondition 查询条件 * @return String */ public static String resetCondition(String queryCondition) { char[] temps = queryCondition.toCharArray(); //查询条件 StringBuffer condition = new StringBuffer(); //重新组装查询条件的字符串,如果包"_"就在"_"之前加上转义字符"/" for (char temp : temps) { if ('_' == temp) { condition.append('/').append(temp); } else { condition.append(temp); } } return condition.toString(); } /** *〈验证字符串是否为空〉 * @param str str * @return boolean */ public static boolean isEmpty(String str) { return str == null || "".equals(str); } /** *〈验证字符串是否不为空〉 * @param str str * @return boolean */ public static boolean notEmpty(String str) { return !isEmpty(str); } /** *〈验证字符串是否为空〉 * @param str str * @return boolean */ public static boolean isEmpty(Object str) { return str == null; } /** *〈〈验证字符串是否为空〉 * @param list list * @return boolean */ public static boolean isEmpty(List<?> list) { return list == null || list.isEmpty(); } /** *〈〈验证字符串是否不为空〉 * @param list list * @return boolean */ public static boolean notEmpty(List<?> list) { return !isEmpty(list); } /** *〈验证字符串是否为空〉 * @param map 待处理的集合 * @return boolean */ public static boolean isEmpty(Map<?, ?> map) { return map == null || map.isEmpty(); } /** *〈验证字符串是否不为空〉 * @param map 待处理的集合 * @return boolean */ public static boolean notEmpty(Map<?, ?> map) { return !isEmpty(map); } /** *〈转换为小写 * @param str str * @return String */ public static String lowerCase(String str) { if (str != null) { str = str.toLowerCase(Locale.CHINESE); } return str; } /** *〈转换为大写〉 * @param str str * @return String */ public static String upperCase(String str) { if (str != null) { str = str.toUpperCase(Locale.CHINESE); } return str; } /** *〈一句话功能描述〉 * @param cls cls * @param methodName methodName * @param classArr classArr * @return Method */ @SuppressWarnings("unchecked") public static Method getMethod(Class<?> cls, String methodName, Class[] classArr) { Method mtd = null; try { mtd = cls.getDeclaredMethod(methodName, classArr); } catch (SecurityException e) { LOG.error(e); } catch (NoSuchMethodException e) { LOG.error(e); } return mtd; } /** * 获取当前服务器ip * @return String */ public static String getLocalSiteIP() { String siteString = ""; try { Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces(); NetworkInterface networkInterface = null; InetAddress ipAddress = null; while (netInterfaces.hasMoreElements()) { networkInterface = (NetworkInterface)netInterfaces.nextElement(); ipAddress = (InetAddress)networkInterface.getInetAddresses().nextElement(); if (ipAddress.isSiteLocalAddress() && !ipAddress.isLoopbackAddress() && ipAddress.getHostAddress().indexOf(":") == -1) { siteString = ipAddress.getHostAddress(); } } } catch (Exception e) { e.toString(); } return siteString; } /** * 〈trim公共方法 * 〈功能详细描述 * @param str str * @return String */ public static String trim(String str) { if (str != null) { str = str.trim(); } return str; } /** * 检查算法表达式合法性 * @param calculateScript 计算脚本 * @return 返回true表达式合?,false表达式不合法 */ public static boolean checkCalculateScript(String calculateScript) { return true; } /** * 获取系统时间 * @return 当前系统时间 */ public static Date getSysDate() { SimpleDateFormat ft = null; Calendar cal = Calendar.getInstance(); // 格式可以自己根据要求修改 ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateTime = ft.format(cal.getTime()); Date nowDate = null; try { nowDate = ft.parse(dateTime); } catch (ParseException e) { LOG.error(e); // e.printStackTrace(); } return nowDate; } /** * 〈根据系统当前时间获取下一个月日期对象〉 * 〈功能详细描述〉 * @return Date */ public static Date getNextMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); return cal.getTime(); } /** * 设置文件输出流的文件名 * @param failName 文件名 * @param response void */ public static void responseSetHeader(String failName, HttpServletResponse response) { response.setHeader("Content-disposition", "attachment; filename=" + failName); response.setContentType("application/msexcel"); } /** *〈为空验证〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean empty(String str, String prop) { if (str == null) { return false; } if ("".equals(str.trim())) { return false; } return true; } /* *〈按字节验证字符串长度〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ /* public static boolean byteLength(String str, String prop) { int length = 20; if (Util.isEmpty(str)) { return true; } char[] chars = str.toCharArray(); int len = 0; for (int i = 0; i < chars.length; i++) { len++; //判断是否非字母 if (chars[i] / 0x80 == 0) { len++; } } return len <= length; }*/ /** *〈非法字符〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean lawless(String str) { boolean result = false; if (Util.isEmpty(str)) { result = true; } result = !Util.test("^[-~!@#$%^&*()_+|=\\;':\",./<>?]+$", str); return result; } /** *〈验证只能为汉字〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean chinese(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^[\u4E00-\u9FA5]+$", str); } /** *〈验证只能为字母〉 * @param str 待验证字符串 * @return boolean */ protected static boolean letter(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^[a-zA-Z]+$", str); } /** *〈验证数字是否在指定范围〉 * @param str str * @param prop prop * @return boolean */ protected static boolean number(String str) { return true; } /** *〈验证手机号码〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean mobile(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^1\\d{10}$", str); } /** *〈验证IP〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean checkIP(String str) { if (Util.isEmpty(str)) { return true; } String pattern = "^(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])(\\.(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])){3}$"; return Util.test(pattern, str); } /** *〈验证日期〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean date(String str) { String pattern = ""; if (Util.isEmpty(str)) { return true; } SimpleDateFormat format = new SimpleDateFormat(pattern); try { format.parse(str); } catch (ParseException e) { return false; } return true; } /** *〈验证邮编〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean postalCode(String str) { if (Util.isEmpty(str)) { return true; } //暂未实现 return true; } /** *〈验证EMAIL〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean email(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^[a-zA-Z0-9_.]+@\\w+\\-?\\w+(\\.\\w+)$", str); } /* *〈验证身份证〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ /* public static boolean checkID(String str) { if (Util.isEmpty(str)) { return true; } if (Util.test("^\\d{17}[xX\\d]$", str)) { return checkID18(str); } else if (Util.test("^\\d{15}$", str)) { return checkID15(str); } else { return false; } }*/ /*private static boolean checkID18(String str) { String year = str.substring(6, 2); String month = str.substring(8, 2); String day = str.substring(10, 2); if (!Util.test("^\\d\\d$", year)) { return false; } if (!isMonth(month)) { return false; } if (!isDay(day)) { return false; } if (Util.parseInt(month) == 2 && Util.parseInt(day) > FEB_DAYES) { return false; } return true; } private static boolean checkID15(String str) { String year = str.substring(ID15_YEAR, 4); String month = str.substring(ID15_MONTH, 2); String day = str.substring(ID15_DAY, 2); if (!isYear(year)) { return false; } if (!isMonth(month)) { return false; } if (!isDay(day)) { return false; } if (Util.parseInt(month) == 2 && Util.parseInt(day) > FEB_DAYES) { return false; } return true; }*/ /** *〈验证必须为数字〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean mustNum(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^\\d+$", str); } /** *〈体重验证〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean avoirdupois(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^([3-9]\\d|1\\d\\d)(\\.\\d{0,2})?$", str); } /** *〈验证身高〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean stature(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^([89]\\d|[12]\\d\\d)(\\.\\d{0,2})?$", str); } /** *〈验证年龄〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean age(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^([1-9]|[1-9]\\d?)$", str); } /** *〈验证鞋码〉 * @param str 待验证字符串 * @param prop prop * @return boolean */ protected static boolean shoeSize(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("(^[34]\\d$)|(^50$)", str); } /** * 判断是否为数字,包含浮点型 * @param str * @return */ public static boolean checkNum(String str) { if (Util.isEmpty(str)) { return true; } return Util.test("^\\d+(\\.\\d+){0,1}$", str); } public static void main(String[] args) { System.out.println(checkNum("12")); } }