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