工具类

package com.spider.common.digitalPay.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Map;
import java.util.Random;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

/**
 * 参数配置
 *
 * @author zhough
 * @date 2013-07-03 10:57:28
 *
 */
public class StringUtils {

 /** 判断是否为double **/
 public static boolean isDouble(String value) {
  try {
   Double.parseDouble(value);
   return true;
  } catch (Exception e) {
   return false;
  }
 }

 /**
  * 检查字符串是否不为空
  *
  * @param aStr 被检查的字符串
  * @return true 字符串不为空,false 字符串为空
  */
 public static boolean isNotEmpty(String aStr) {
  return (aStr != null && aStr.trim().length() > 0);
 }

 /**
  * 检查字符串是否为空
  *
  * @param aStr
  *            被检查的字符串
  * @return true 字符串为空,false 字符串不为空
  */
 public static boolean isEmpty(String aStr) {
  return (aStr == null || aStr.trim().length() == 0);
 }

 /**
  * 判断字符串
  *
  * @param aStr
  * @return
  */
 public static String nvl(String aStr) {
  if (aStr == null || "null".equals(aStr.trim())) {
   return "";
  } else {
   return aStr.trim().toString();
  }
 }

 public static String nvl(String name, String value) {
  if (name == null || name.length() == 0) {
   return value;
  }
  return name.trim();
 }

 public static void setCookie(HttpServletResponse response, String name,
   String value, int num) {
  Cookie cookie = new Cookie(name, value);
  cookie.setPath("/");
  cookie.setMaxAge(num * 60 * 60 * 24);
  response.addCookie(cookie);
 }

 public static void setDomainCookie(HttpServletResponse response,
   String name, String value, int num) {
  Cookie cookie = new Cookie(name, value);
  cookie.setPath("/");
  cookie.setDomain(".spider.com.cn");
  cookie.setMaxAge(num * 60 * 60 * 24);
  response.addCookie(cookie);
 }

 /**
  * 获得cookies
  *
  * @param request
  * @param name
  * @return
  */
 public static String getCookie(HttpServletRequest request, String name) {
  Cookie[] cookies = request.getCookies();
  if (cookies == null) {
   return null;
  }
  for (int i = 0; i < cookies.length; ++i) {
   Cookie cookie = cookies[i];
   String cookieName = cookie.getName();
   if (cookieName.equals(name)) {
    return cookie.getValue();
   }
  }
  return null;
 }

 /**
  * 读取stringName 指定的文件内容
  *
  * @param stringName
  * @return
  * @throws IOException
  */
 public static String readFile(String failname, String decname) {
  StringBuffer sb = new StringBuffer();
  try {
   BufferedReader bufferedreader = new BufferedReader(
     new InputStreamReader(new FileInputStream(failname), "UTF-8"));
   String str;
   if ("br".equals(decname.trim())) {
    while ((str = bufferedreader.readLine()) != null) {
     sb.append(str + "\r\n");
    }
   } else {
    while ((str = bufferedreader.readLine()) != null) {
     sb.append(str);
    }
   }
   bufferedreader.close();
  } catch (IOException e) {
   Logger.error("readFile " + failname + " error = " + e.getMessage());
  }
  return sb.toString();
 }

 /**
  * 把内容输入到相应的文件中
  *
  * @param fileName
  * @param paramString2
  * @throws IOException
  */
 public static void writeFile(String filename, String name) {
  try {
   new File(filename).delete();
   FileOutputStream fos = new FileOutputStream(filename);
   fos.write(name.getBytes("UTF-8"));
   fos.close();
  } catch (IOException e) {
   Logger.error("writeFile " + filename + "--->" + name + " error = " + e.getMessage());
  }
 }

 public static String readFile_GBK(String failname) {
  StringBuffer sb = new StringBuffer();
  try {
   BufferedReader bufferedreader = new BufferedReader(
     new InputStreamReader(new FileInputStream(failname), "GB2312"));
   String s1;
   while ((s1 = bufferedreader.readLine()) != null) {
    sb.append(s1 + "\r\n");
   }
   bufferedreader.close();
  } catch (IOException e) {
   Logger.error("readFile " + failname + " error = " + e.getMessage());
  }
  return sb.toString();
 }

 public static void writeFile_GBK(String filename, String name) {
  try {
   new File(filename).delete();
   FileOutputStream fos = new FileOutputStream(filename);
   fos.write(name.getBytes("GB2312"));
   fos.close();
  } catch (IOException e) {
   Logger.error("writeFile " + filename + "--->" + name + " error = " + e.getMessage());
  }
 }

 /**
  * 字符截取 不区别中文
  *
  * @param aStr
  * @param aLen
  * @return
  */
 public static String left(String aStr, int aLen) {
  if (aLen < 0) {
   throw new IllegalArgumentException("Requested String length "
     + aLen + " is less than zero");
  }
  if ((aStr == null) || (aStr.length() <= aLen)) {
   return aStr;
  } else {
   return aStr.substring(0, aLen);
  }
 }

 /**
  * 字符截取 区别中文
  *
  * @param aStr
  * @param aLen
  * @return
  */
 public static String leftChar(String aStr, int aLen) {
  String results = "";
  if (StringUtils.isNotEmpty(aStr)) {
   char chars[] = aStr.toCharArray();
   int num = 0;
   for (int i = 0; i < chars.length; i++) {
    String tmpStr = "";
    if (Character.toString(chars[i]).matches("[\\u4E00-\\u9FA5]+")) {
     tmpStr = Character.toString(chars[i]);
     num += 2;
    } else {
     tmpStr = Character.toString(chars[i]);
     num += 1;
    }
    results += tmpStr;
    if (num >= aLen) {
     break;
    }
   }
  }
  return results;
 }

 /**
  * 将字符串stringName 根据标记splitStringName拆分为字符数组
  *
  * @param stringName
  * @param sign
  * @return
  */
 public static String[] split(String name, String sign) {
  if (name == null || name.length() == 0) {
   return new String[0];
  }
  if (name.indexOf(sign) < 0) {
   return new String[] { name };
  }
  // StringTokenizer 类允许应用程序将字符串分解为标记 为指定字符串构造一个 StringTokenizer
  StringTokenizer stkr = new StringTokenizer(name, sign);
  // 计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数
  int amount = stkr.countTokens();
  String[] as = new String[amount];
  for (int i = 0; i < amount; ++i) {
   // 返回此 StringTokenizer 的下一个标记 赋值
   as[i] = stkr.nextToken();
  }
  return as;
 }

 @SuppressWarnings("unused")
 private static Object getFieldValueByName(String fieldName, Object obj) {
  try {
   String Letter = fieldName.substring(0, 1).toUpperCase();
   String methodStr = "get" + Letter + fieldName.substring(1);
   Method method = obj.getClass().getMethod(methodStr, new Class[] {});
   Object value = method.invoke(obj, new Object[] {});
   return value;
  } catch (Exception e) {
   return null;
  }
 }

 public static String getIpAddr(HttpServletRequest request) {
  String ip = request.getHeader("X-Forwarded-For");
  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
   ip = request.getHeader("Proxy-Client-IP");
   if (ip == null || ip.length() == 0
     || "unknown".equalsIgnoreCase(ip)) {
    ip = request.getHeader("Proxy-Client-IP");
    if (ip == null || ip.length() == 0
      || "unknown".equalsIgnoreCase(ip)) {
     ip = request.getHeader("WL-Proxy-Client-IP");
     if (ip == null || ip.length() == 0
       || "unknown".equalsIgnoreCase(ip)) {
      ip = request.getHeader("HTTP_CLIENT_IP");
      if (ip == null || ip.length() == 0
        || "unknown".equalsIgnoreCase(ip)) {
       ip = request.getHeader("HTTP_X_FORWARDED_FOR");
       if (ip == null || ip.length() == 0
         || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
       }
      }
     }
    }
   }
  }
  /** 如果ip来源是负载均衡设备 则 使用clientip获取值 */
  if (null == ip || "192.168.10.1".equals(ip)) {
   ip = request.getHeader("client-ip");
   if (null == ip) {
    ip = request.getRemoteAddr();
   }
  }
  return ip;
 }

 /**
  * 判断文件是否存在
  *
  * @param filename
  *            配置文件的路径名
  *
  * @author songnan
  * @Date 2009-08-04
  * @return
  */
 public static boolean exists(String filename) {
  return new File(filename).exists();
 }

 /**
  *
  * @param db
  * @return 3.00
  */
 public static String Decimalformat(double db) {
  DecimalFormat df1 = new DecimalFormat("###,##0.00");
  return df1.format(db);
 }

 /**
  * 对Double 进行 format为 0.00
  *
  * @param paramString
  * @return
  */
 public static String formatdb(double paramDouble) {
  DecimalFormat df = new DecimalFormat("#0.00");
  return df.format(paramDouble);
 }

 /**
  * 对String 进行 format为 0.00
  *
  * @param paramString
  * @return
  */
 public static String formatstr(String paramString) {
  DecimalFormat df = new DecimalFormat("#0.00");
  if (isNotEmpty(paramString)) {
   return df.format(Double.valueOf(paramString));
  } else {
   return "0.00";
  }
 }

 public static String formatstrint(String paramString) {
  DecimalFormat df = new DecimalFormat("#0");
  if (isNotEmpty(paramString)) {
   return df.format(Double.valueOf(paramString));
  } else {
   return "0.00";
  }
 }

 /**
  *
  * @param db
  * @return 3.00
  */
 public static String DecimalformatStr(String str) {
  if ("".equals(nvl(str))) {
   return "";
  }
  return Decimalformat(Double.parseDouble(str));
 }

 /**
  * 日期格式转换
  *
  * @param dateStr
  * @param type
  *            转换的类型
  * @return
  */
 public static String Dateformat(String dateStr, String type) {
  try {
   SimpleDateFormat dateFormatter = new SimpleDateFormat(type);
   if ("".equals(nvl(dateStr))) {
    return "";
   }
   Date date = dateFormatter.parse(dateStr);
   return dateFormatter.format(date);
  } catch (ParseException e) {
   e.printStackTrace();
   return "";
  }
 }

 /**
  * 日期格式转换
  *
  * @param dateStr
  * @param type
  *            转换的类型
  * @return
  */
 public static String DateformatByType(String dateStr, String type) {
  try {
   SimpleDateFormat dateFormatter = new SimpleDateFormat(type);
   if ("".equals(nvl(dateStr))) {
    return "";
   }
   Date date = strToDate(dateStr);
   return dateFormatter.format(date);
  } catch (Exception e) {
   e.printStackTrace();
   return "";
  }
 }

 public static double strToDb(String str) {
  if ("".equals(nvl(str))) {
   return 0;
  } else {
   return Double.parseDouble(str);
  }
 }

 public static int strToInt(String str) {
  if ("".equals(nvl(str))) {
   return 0;
  } else {
   return Integer.parseInt(str);
  }
 }

 /**
  * 获取当天时间
  *
  * @param dateformat
  * @return
  */
 public static String getNowTime(String dateformat) {
  Date now = new Date();
  SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);
  String hehe = dateFormat.format(now);
  return hehe;
 }

 /** 几小时之后的时间 * */
 public static String getPassHourTime(int passHour) {
  SimpleDateFormat sdf = new SimpleDateFormat("HHmm");
  Calendar cal = new GregorianCalendar();
  cal.setTime(new Date());
  cal.add(Calendar.HOUR, passHour);
  Date dateTime = cal.getTime();
  String preHour = sdf.format(dateTime);
  return preHour;
 }

 /**
  * 根据date 相加 后的年 月 日
  *
  * @param date
  * @return
  */
 public static String getaddDate(int date) {
  GregorianCalendar currentDate = new GregorianCalendar();
  currentDate.add(GregorianCalendar.DATE, date);
  Date monday = currentDate.getTime();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
  Calendar cal = new GregorianCalendar();
  cal.setTime(monday);
  cal.add(Calendar.MONTH, 1);
  cal.set(Calendar.DATE, 1);
  Date yearDay = cal.getTime();
  String preMonday = sdf.format(yearDay);
  return preMonday;
 }

 // 根据日期 date 获得向后推迟day个月的最后一天
 @SuppressWarnings("deprecation")
 public static String getendDateTow(String date, int month) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMM");
  String newDate = null;
  try {
   Date newdate = myFormatter.parse(date);
   Calendar cal = new GregorianCalendar();
   cal.setTime(newdate);
   int i = cal.getTime().getMonth() + 1;
   if ((i + 1) % 2 == 0) {
    cal.add(Calendar.MONTH, month);
   } else {
    cal.add(Calendar.MONTH, month + 1);
   }
   cal.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
   Date dateTime = cal.getTime();
   newDate = myFormatter.format(dateTime);
  } catch (Exception e) {
   e.getMessage();
  }
  return newDate;
 }

 @SuppressWarnings("deprecation")
 public static String getendDateThree(String date, int month) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMM");
  String newDate = null;
  try {
   Date newdate = myFormatter.parse(date);
   Calendar cal = new GregorianCalendar();
   cal.setTime(newdate);
   int i = cal.getTime().getMonth() + 1;
   if ((i - 1) % 3 == 0) {
    cal.add(Calendar.MONTH, month);
   } else if ((i - 2) % 3 == 0) {
    cal.add(Calendar.MONTH, month + 2);
   } else {
    cal.add(Calendar.MONTH, month + 1);
   }
   cal.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
   Date dateTime = cal.getTime();
   newDate = myFormatter.format(dateTime);
  } catch (Exception e) {
   e.getMessage();
  }
  return newDate;
 }

 @SuppressWarnings("deprecation")
 public static String getendDateSix(String date, int month) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMM");
  String newDate = null;
  try {
   Date newdate = myFormatter.parse(date);
   Calendar cal = new GregorianCalendar();
   cal.setTime(newdate);
   int i = cal.getTime().getMonth() + 1;
   if (0 < i && i <= 1) {
    cal.set(Calendar.MONTH, 0);
   } else if (i > 1 && i <= 7) {
    cal.set(Calendar.MONTH, 6);
   } else {
    cal.add(Calendar.YEAR, 1);
    cal.set(Calendar.MONTH, 0);
   }
   Date dateTime = cal.getTime();
   newDate = myFormatter.format(dateTime);
  } catch (Exception e) {
   e.getMessage();
  }
  return newDate;
 }

 // 根据日期 date 获得向后推迟day个月的最后一天
 public static String getendDate(String date, int month) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMM");
  String newDate = null;
  try {
   Date newdate = myFormatter.parse(date);
   Calendar cal = new GregorianCalendar();
   cal.setTime(newdate);
   cal.add(Calendar.MONTH, month);
   cal.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
   Date dateTime = cal.getTime();
   newDate = myFormatter.format(dateTime);
  } catch (Exception e) {
   e.getMessage();
  }
  return newDate;
 }

 public static String getCurrDate() {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMM");
  Date dDate = new Date();
  String strTime = myFormatter.format(dDate);
  return strTime;
 }

 // 获取当前年份的最后一个月
 public static String getlastMonthDate() {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMM");
  Date dDate = new Date();
  String strTime = myFormatter.format(dDate);
  String newDate = strTime.substring(0, 4) + "12";
  return newDate;
 }

 /**
  * 从XML文件xmlName中提取包含XML标记attributeName的内容
  *
  * @param xmlName
  * @param attributeName
  * @return
  */
 public static String parseXMLTag(String xmlName, String attributeName) {
  String attributeNameOne = "<" + attributeName + ">";
  String attributeNameTwo = "</" + attributeName + ">";
  int i = xmlName.indexOf(attributeNameOne);
  int j = xmlName.indexOf(attributeNameTwo);
  if ((i < 0) || (j < 0)) {
   return "";
  }
  return nvl(xmlName.substring(i + attributeNameOne.length(), j));
 }

 public static String jumpLogin(String jump_login) {
  if (StringUtils.isNotEmpty(jump_login)) {
   jump_login = StringUtils.nvl(jump_login);
   if ("orderdelivery".equals(jump_login)) {
    return "orderdelivery";
   }
  }
  return "login";
 }

 public static String format(int i) {
  String seq = "000000" + String.valueOf(i);
  seq = seq.substring(seq.length() - 3);
  return seq;
 }

 public static String replaceStr(String str) {
  if (str.contains("/")) {
   str = str.replaceAll("/", "\\\\");
  }
  if (str.contains("|")) {
   str = str.replaceAll("\\|", "\\\\");
  }
  return str;
 }

 public static String replace(String str, String name, String value) {
  if (str == null || str.length() == 0) {
   return "";
  }
  if ((name == null) || (value == null) || (name.length() == 0)
    || (value.length() == 0)) {
   return str;
  }

  StringBuffer sb = new StringBuffer();
  int i = 0;
  for (int j = str.indexOf(name, i); j >= 0; j = str.indexOf(name, i)) {
   sb.append(str.substring(i, j));
   sb.append(value);
   i = j + name.length();
  }
  sb.append(str.substring(i));
  return sb.toString();
 }

 public static String zpf(String param, int num) {
  String str = "000000000000" + param;
  return str.substring(str.length() - num);
 }

 /**
  * 随机获取
  *
  * @author songnan
  * @param digit
  * @return
  */
 public static String getRandomString(int digit) {
  StringBuffer str = new StringBuffer(digit);
  for (int i = 0; i < digit; i++) {
   int psd = (int) (Math.random() * (26 * 2 + 10));
   if (psd >= 26 + 10) { // a~z
    char a = (char) (psd + 97 - 10 - 26);
    str.append(String.valueOf(a));
   } else if (psd >= 10) { // A~Z
    char a = (char) (psd + 65 - 10);
    str.append(String.valueOf(a));
   } else { // 0~9
    str.append(String.valueOf(psd));
   }
  }
  return str.toString().toLowerCase();
 }

 /**
  * 判断是否是邮箱
  *
  * @author songnan
  * @param emil
  * @return
  */
 public static boolean checkemail(String emil) {
  Pattern pattern = Pattern
    .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
  Matcher isNum = pattern.matcher(emil);
  if (!isNum.matches()) {
   return false;
  }
  return true;
 }

 /**
  * 用正则表达式 判断是否数字
  *
  * @author songnan
  * @param str
  * @return
  */
 public static boolean isNumeric(String str) {
  if (StringUtils.isEmpty(str)) {
   return false;
  } else {
   Pattern pattern = Pattern.compile("[0-9]*");
   return pattern.matcher(str).matches();
  }
 }

 /**
  * 编码转换
  *
  * @author songnan
  * @param name
  * @return
  */
 public static String Transcoding(String name) {
  if ((name == null) || (name.length() == 0))
   return name;
  try {
   if (name.getBytes("ISO-8859-1").length > 1) {
    return new String(name.getBytes("ISO-8859-1"), "UTF-8");
   }
  } catch (Exception exception) {
  }
  return name;
 }

 /**
  * 创建目录
  *
  * @author songnan
  * @param destDirName
  * @return
  */
 public static boolean createDir(String destDirName) {
  File dir = new File(destDirName);
  if (dir.exists()) {
   return false;
  }
  if (!destDirName.endsWith(File.separator)) {
   destDirName = destDirName + File.separator;
  }
  if (dir.mkdirs()) {
   return true;
  } else {
   return false;
  }
 }

 /**
  * 基本功能:过滤所有以"<"开头以">"结尾的标签
  *
  * @author songnan
  * @param str
  * @return String
  */
 public static String filterHtml(String str) {
  Pattern pattern = Pattern.compile("<([^>]*)>");
  Matcher matcher = pattern.matcher(str);
  StringBuffer sb = new StringBuffer();
  boolean result1 = matcher.find();
  while (result1) {
   matcher.appendReplacement(sb, "");
   result1 = matcher.find();
  }
  matcher.appendTail(sb);
  return sb.toString();
 }

 public static String digit(String str) {
  if (isEmpty(str)) {
   return "";
  }
  String result = "";
  for (int i = 0; i <= str.length() - 1; i++) {
   char c = str.charAt(i);
   switch (c) {
   case '1':
    result += "一";
    break;
   case '2':
    result += "二";
    break;
   case '3':
    result += "三";
    break;
   case '4':
    result += "四";
    break;
   case '5':
    result += "五";
    break;
   case '6':
    result += "六";
    break;
   case '7':
    result += "七";
    break;
   case '8':
    result += "八";
    break;
   case '9':
    result += "九";
    break;
   case '0':
    break;
   }
  }
  return result;
 }

 /**
  * 日期格式转换
  *
  * @param dateStr
  * @param type
  *            转换的类型
  * @return
  */
 public static String Dateformat(String dateStr) {
  String pattern = "yyyy-MM-dd HH:mm:ss";
  try {
   if (StringUtils.isEmpty(dateStr)) {
    return "";
   }
   if (!dateStr.contains(":")) {
    pattern = "yyyy-MM-dd";
   }
   SimpleDateFormat dateFormatter = new SimpleDateFormat(pattern);
   if (StringUtils.isEmpty(dateStr)) {
    return "";
   }
   Date date = dateFormatter.parse(dateStr);
   return dateFormatter.format(date);
  } catch (Exception e) {
   e.printStackTrace();
   return "";
  }
 }

 public static String cDateformatMonth(String dateStr) {
  if (StringUtils.isNotEmpty(dateStr)) {
   String pattern = "MM月dd日";
   SimpleDateFormat dateFormatter = new SimpleDateFormat(pattern);
   SimpleDateFormat dateFormatters = new SimpleDateFormat("yyyy-MM-dd");
   try {
    return dateFormatter.format(dateFormatters.parse(dateStr));
   } catch (ParseException e) {
    e.printStackTrace();
   }
  }
  return "";
 }
 
 public static String DateformatYY(String dateStr) {
  if (StringUtils.isNotEmpty(dateStr)) {
   String pattern = "yyyy年MM月dd日";
   SimpleDateFormat dateFormatter = new SimpleDateFormat(pattern);
   SimpleDateFormat dateFormatters = new SimpleDateFormat("yyyy-MM-dd");
   try {
    return dateFormatter.format(dateFormatters.parse(dateStr));
   } catch (ParseException e) {
    e.printStackTrace();
   }
  }
  return "";
 }
 
 public static String cDateformatHour(String dateStr) {
  String pattern = "HH:mm";
  SimpleDateFormat dateFormatter = new SimpleDateFormat(pattern);
  SimpleDateFormat dateFormatters = new SimpleDateFormat("HH:mm");
  try {
   return dateFormatter.format(dateFormatters.parse(dateStr));
  } catch (ParseException e) {
   e.printStackTrace();
  }
  return null;
 }

 public static String RandomStrNum(int num) {
  StringBuffer randomCode = new StringBuffer();
  char codeSequence[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
    '9' };
  Random random = new Random();
  for (int i = 0; i < num; i++) {
   String strRand = String.valueOf(codeSequence[random
     .nextInt(codeSequence.length)]);
   randomCode.append(strRand);
  }
  return randomCode.toString();
 }

 public static String RandomStr(int num) {
  StringBuffer randomCode = new StringBuffer();
  char codeSequence[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
    '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
    'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
    'X', 'Y', 'Z' };
  Random random = new Random();
  for (int i = 0; i < num; i++) {
   String strRand = String.valueOf(codeSequence[random
     .nextInt(codeSequence.length)]);
   randomCode.append(strRand);
  }
  return randomCode.toString();
 }

 /**
  * 根据一个日期,返回是星期几的字符串
  *
  * @param sdate
  * @return
  */
 public static String getWeek(String sdate) {
  if (StringUtils.isNotEmpty(sdate)) {
   // 再转换为时间
   Date date = strToDate(sdate);
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   // int hour=c.get(Calendar.DAY_OF_WEEK);
   // hour中存的就是星期几了,其范围 1~7
   // 1=星期日 7=星期六,其他类推
   return new SimpleDateFormat("EEEE").format(c.getTime());
  }
  return "";
 }

 public static Date strToDate(String strDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(strDate, pos);
  return strtodate;
 }

 public static Date strToDateTime(String strDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(strDate, pos);
  return strtodate;
 }

 public static String resultError(String parm, String messages) {
  String result = "";
  if ("1".equals(parm)) {
   result = "锁位失败";
  } else if ("2".equals(parm)) {
   result = "座椅维修,请另择";
  } else if ("3".equals(parm)) {
   if (messages.contains("SLPE:Seat-Locking Processing Error")) {
    result = "座位无法锁定,可能已被他人选择";
   } else {
    result = "查无此座";
   }
  } else if ("4".equals(parm)) {
   if (messages.contains("NECSE:Not Enough Continuous Seats Error")) {
    result = "没有足够的连续座位";
   } else {
    result = "情侣座锁定失败";
   }
  } else if ("5".equals(parm)) {
   result = "数据链路断开(检查影院网络连接)";
  } else if ("6".equals(parm)) {
   result = "场次信息无效";
  } else if ("7".equals(parm)) {
   result = "";
  } else if ("8".equals(parm)) {
   result = "";
  } else if ("9".equals(parm)) {
   result = "";
  } else if ("10".equals(parm)) {
   result = "日期区间超过2天";
  } else if ("11".equals(parm)) {
   result = "锁位失败,每次允许提交[x]个锁位请求";
  } else if ("12".equals(parm)) {
   result = "超过每笔订单最大锁位数6个";
  } else if ("13".equals(parm)) {
   result = "不能锁定已开场的场次";
  } else {
   return messages;
  }
  return result;
 }

 public static String getToken(String token) {
  return StringUtils.getNowTime("yyyyMMddHHmmss") + token;
 }

 public static int getWeekInt(String sdate) {
  Calendar c = Calendar.getInstance();
  c.setTime(getDate(sdate));
  return c.get(Calendar.DAY_OF_WEEK) - 1;
 }

 public static Date getDate(String sdate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  ParsePosition pos = new ParsePosition(0);
  return formatter.parse(sdate, pos);
 }

 public static int getTwoDay(String sj1, String sj2) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  long day = 0;
  try {
   java.util.Date date = myFormatter.parse(sj1);
   java.util.Date mydate = myFormatter.parse(sj2);
   day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  } catch (Exception e) {
   return 0;
  }
  return (int) day;
 }

 public static long getTwoDate(String sj1, String sj2) {
  SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
  long day = 0;
  try {
   java.util.Date date = myFormatter.parse(sj1);
   java.util.Date mydate = myFormatter.parse(sj2);
   day = date.getTime() - mydate.getTime();
  } catch (Exception e) {
   return 0;
  }
  return day;
 }

 public static long getTwoTime(String sj1, String sj2) {
  SimpleDateFormat myFormatter = new SimpleDateFormat(
    "yyyy-MM-dd HH:mm:ss");
  long day = 0;
  try {
   java.util.Date date = myFormatter.parse(sj1);
   java.util.Date mydate = myFormatter.parse(sj2);
   day = date.getTime() - mydate.getTime();
  } catch (Exception e) {
   return 0;
  }
  return day;
 }

 public static boolean writeTxtFile(String newStr, String url) {
  FileInputStream fis = null;
  InputStreamReader isr = null;
  BufferedReader br = null;
  FileOutputStream fos = null;
  PrintWriter pw = null;
  try {
   File file = new File(url);
   if (!file.exists()) {
    file.createNewFile();
   }
   fis = new FileInputStream(file);
   isr = new InputStreamReader(fis);
   br = new BufferedReader(isr);
   StringBuffer buf = new StringBuffer();
   String readTmp = "";
   for (int j = 1; (readTmp = br.readLine()) != null; j++) {
    buf = buf.append(readTmp);
    buf = buf.append(System.getProperty("line.separator"));
   }
   buf.append(newStr + "\r\n");
   fos = new FileOutputStream(file);
   pw = new PrintWriter(fos);
   pw.write(buf.toString().toCharArray());
   pw.flush();
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  } finally {
   try {
    if (pw != null) {
     pw.close();
    }
    if (fos != null) {
     fos.close();
    }
    if (br != null) {
     br.close();
    }
    if (isr != null) {
     isr.close();
    }
    if (fis != null) {
     fis.close();
    }
   } catch (Exception e1) {
    e1.printStackTrace();
   }
  }
  return true;
 }

 public static boolean writeXmlFile(String newStr, String url) {
  FileInputStream fis = null;
  InputStreamReader isr = null;
  BufferedReader br = null;
  FileOutputStream fos = null;
  PrintWriter pw = null;
  try {
   File file = new File(url);
   if (file.exists()) {
    file.delete();
   }
   file.createNewFile();
   fis = new FileInputStream(file);
   isr = new InputStreamReader(fis);
   br = new BufferedReader(isr);
   StringBuffer buf = new StringBuffer();
   String readTmp = "";
   for (int j = 1; (readTmp = br.readLine()) != null; j++) {
    buf = buf.append(readTmp);
    buf = buf.append(System.getProperty("line.separator"));
   }
   buf.append(newStr + "\r\n");
   fos = new FileOutputStream(file);
   pw = new PrintWriter(fos);
   pw.write(buf.toString().toCharArray());
   pw.flush();
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  } finally {
   try {
    if (pw != null) {
     pw.close();
    }
    if (fos != null) {
     fos.close();
    }
    if (br != null) {
     br.close();
    }
    if (isr != null) {
     isr.close();
    }
    if (fis != null) {
     fis.close();
    }
   } catch (Exception e1) {
    e1.printStackTrace();
   }
  }
  return true;
 }

 /** 将分钟转化为xx小时xx分钟 * */
 public static String getHours(String second) {
  int duration = StringUtils.strToInt(second);
  String durationTime = "";
  if (duration >= 60) {
   int hour = duration / 60;
   durationTime = hour + "小时";
   if ((duration - hour * 60) > 0) {
    durationTime += (duration - hour * 60) + "分钟";
   }
  } else {
   durationTime = duration + "分钟";
  }
  return durationTime;
 }

 /** 手机客户端特殊字符替换 * */
 public static String getReplaceResult(String message) {
  return message.replaceAll("\r\n", "").replaceAll("\"", "“");
 }

 /**
  * 根据经纬度 获取范围 lat 纬度 lon 经度
  *
  * @param raidus
  *            单位米 return minLat,minLng,maxLat,maxLng
  */
 public static double[] getAround(double lat, double lon, int raidus) {

  Double latitude = lat;
  Double longitude = lon;

  Double degree = (24901 * 1609) / 360.0;
  double raidusMile = raidus;

  Double dpmLat = 1 / degree;
  Double radiusLat = dpmLat * raidusMile;
  Double minLat = latitude - radiusLat;
  Double maxLat = latitude + radiusLat;

  Double mpdLng = degree * Math.cos(latitude * (Math.PI / 180));
  Double dpmLng = 1 / mpdLng;
  Double radiusLng = dpmLng * raidusMile;
  Double minLng = longitude - radiusLng;
  Double maxLng = longitude + radiusLng;
  return new double[] { minLat, minLng, maxLat, maxLng };
 }

 /**
  * 获取传过来的流媒体
  *
  * @param request
  * @return
  * @throws UnsupportedEncodingException
  * @throws IOException
  */
 public static String getRequestData(HttpServletRequest request)
   throws UnsupportedEncodingException, IOException {
  String encode = "utf-8";
  BufferedReader in = new BufferedReader(new InputStreamReader(request
    .getInputStream(), encode));

  String result = "";
  String line;
  while ((line = in.readLine()) != null) {
   result = result + line;
  }
  in.close();
  return result;
 }

 private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签

 /**
  * 默认去掉<> 标签, strs 需要过滤的字符数组
  *
  * @param str
  * @param strs
  * @return
  */
 public static String filterHtml(String str, String[] strs) {
  Pattern pattern = Pattern.compile(regxpForHtml);
  Matcher matcher = pattern.matcher(str);
  StringBuffer sb = new StringBuffer();
  boolean result1 = matcher.find();
  while (result1) {
   matcher.appendReplacement(sb, "");
   result1 = matcher.find();
  }
  matcher.appendTail(sb);
  String result = sb.toString();
  for (int i = 0; i < strs.length; i++) {
   result = result.replace(strs[i], "");
  }
  return result;
 }

 /** 读取对方地址输出的流媒体 * */
 public static String dataReq(String urlLink, String xml, String encode) {
  HttpURLConnection httpurlconnection = null;
  try {
   URL url = null;
   url = new URL(urlLink);
   httpurlconnection = (HttpURLConnection) url.openConnection();
   // httpurlconnection.setRequestProperty("Content-type", "text/xml");
   httpurlconnection.setDoOutput(true);
   httpurlconnection.setDoInput(true);
   httpurlconnection.setRequestMethod("POST");
   if (isNotEmpty(xml)) {
    String SendData = xml;
    httpurlconnection.getOutputStream().write(
      SendData.getBytes(encode));
    httpurlconnection.getOutputStream().flush();
    httpurlconnection.getOutputStream().close();
   }
   String result = "";
   BufferedReader in = new BufferedReader(new InputStreamReader(
     httpurlconnection.getInputStream(), encode));
   String line;
   while ((line = in.readLine()) != null) {
    result = result + line + "\r\n";
   }
   in.close();
   return result;
  } catch (Exception e) {
   e.printStackTrace();
   return "";
  } finally {
   if (httpurlconnection != null)
    httpurlconnection.disconnect();
  }
 }

 /** 读取对方地址输出的流媒体 * */
 public static String dataReqGET(String urlLink, String xml, String encode) {
  HttpURLConnection httpurlconnection = null;
  try {
   URL url = null;
   url = new URL(urlLink);
   httpurlconnection = (HttpURLConnection) url.openConnection();
   // httpurlconnection.setRequestProperty("Content-type", "text/xml");
   httpurlconnection.setDoOutput(true);
   httpurlconnection.setDoInput(true);
   httpurlconnection.setRequestMethod("GET");// POST or GET
   if (isNotEmpty(xml)) {
    String SendData = xml;
    httpurlconnection.getOutputStream().write(
      SendData.getBytes(encode));
    httpurlconnection.getOutputStream().flush();
    httpurlconnection.getOutputStream().close();
   }
   String result = "";
   BufferedReader in = new BufferedReader(new InputStreamReader(
     httpurlconnection.getInputStream(), encode));
   String line;
   while ((line = in.readLine()) != null) {
    result = result + line + "\r\n";
   }
   in.close();
   return result;
  } catch (Exception e) {
   e.printStackTrace();
   return "";
  } finally {
   if (httpurlconnection != null)
    httpurlconnection.disconnect();
  }
 }

 /**
  * 获取URL主域名
  *
  * @param url
  * @return
  */
 public static String getRealmname(String url) {
  Pattern p = Pattern.compile(
    "(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)",
    Pattern.CASE_INSENSITIVE);
  Matcher matcher = p.matcher(url);
  matcher.find();
  return matcher.group();
 }
 
 /**
  * @param url 请求远程地址
  * @return
  */
 public static String readContentFromGet(String url) {
  StringBuffer receivedData = new StringBuffer();
  try{
   URL getUrl = new URL(url);
         HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
         connection.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0; Windows XP; DigExt)");
         connection.setDoInput(true);
         connection.setDoOutput(true);
         connection.connect();
         BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
        
         String aLine = null;
         while ((aLine = reader.readLine()) != null)
    receivedData.append(aLine.trim());
         reader.close();
         connection.disconnect();
  }catch(IOException e){
   e.printStackTrace();
  }
        return receivedData.toString();
    }
 
 /** 获取两个日期相差的天数 **/
 public static long getQuot(String time1, String time2){ 
  long quot = 0; 
  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); 
  try {  
   Date date1 = ft.parse( time1 );  
   Date date2 = ft.parse( time2 );  
   quot = date1.getTime() - date2.getTime();  
   quot = quot / 1000 / 60 / 60 / 24; 
  } catch (ParseException e) {  
   e.printStackTrace(); 
  } 
  return quot;
 }
 
 /** 比较两个日期的大小 **/
 public static boolean compareDate(String time1, String time2){
  boolean b = false;
  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); 
  try{
   Date date1 = ft.parse( time1 );  
   Date date2 = ft.parse( time2 );
   if(date1.getTime() > date2.getTime()){
    b = true;
   }
  }catch(ParseException e){
   e.printStackTrace(); 
  }
  return b;
 }
 
 /** 比较两个日期的大小 **/
 public static boolean compareDate1(String time1, String time2){
  boolean b = false;
  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); 
  try{
   Date date1 = ft.parse( time1 );  
   Date date2 = ft.parse( time2 );
   if(date1.getTime() >= date2.getTime()){
    b = true;
   }
  }catch(ParseException e){
   e.printStackTrace(); 
  }
  return b;
 }
 
 /** 日期加月数 **/
 public static String getLateDate(String sDate,int iMonths) { 
  String sLateDate = ""; 
  Calendar calendar = Calendar.getInstance(); 
  try {  
   String time = sDate;  
   String[] arrDate = time.split("-");  
   int iYear = Integer.valueOf(arrDate[0]);  
   int iMonth = Integer.valueOf(arrDate[1]);  
   int iDay = Integer.valueOf(arrDate[2]);      
   calendar.set(iYear, iMonth, iDay);  
   calendar.add(Calendar.MONTH, -1);//因为Month值从0开始,所以取得的值应该减去1  
   calendar.add(Calendar.MONTH, iMonths);     
   Date date = new Date();  
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//构造日期格式化器  
   date = calendar.getTime();  
   sLateDate = sdf.format(date); 
  } catch (Exception e) {  
   e.printStackTrace(); 
  } 
  return sLateDate;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值