|
|
@@ -13,259 +13,259 @@ import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
|
* 字符串操作工具包
|
|
|
- *
|
|
|
+ *
|
|
|
* @author liux (http://my.oschina.net/liux)
|
|
|
* @version 1.0
|
|
|
* @created 2012-3-21
|
|
|
*/
|
|
|
@SuppressWarnings("unused")
|
|
|
public class StringUtils {
|
|
|
- private final static Pattern emailer = Pattern
|
|
|
- .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
|
|
|
- // private final static SimpleDateFormat dateFormater = new
|
|
|
- // SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- // private final static SimpleDateFormat dateFormater2 = new
|
|
|
- // SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ private final static Pattern emailer = Pattern
|
|
|
+ .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
|
|
|
+ // private final static SimpleDateFormat dateFormater = new
|
|
|
+ // SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ // private final static SimpleDateFormat dateFormater2 = new
|
|
|
+ // SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
- private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
|
|
|
- @Override
|
|
|
- protected SimpleDateFormat initialValue() {
|
|
|
- return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- }
|
|
|
- };
|
|
|
+ private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
|
|
|
+ @Override
|
|
|
+ protected SimpleDateFormat initialValue() {
|
|
|
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
- private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
|
|
|
- @Override
|
|
|
- protected SimpleDateFormat initialValue() {
|
|
|
- return new SimpleDateFormat("yyyy-MM-dd");
|
|
|
- }
|
|
|
- };
|
|
|
+ private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {
|
|
|
+ @Override
|
|
|
+ protected SimpleDateFormat initialValue() {
|
|
|
+ return new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
- /**
|
|
|
- * 将字符串转为日期类型
|
|
|
- *
|
|
|
- * @param sdate
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static Date toDate(String sdate) {
|
|
|
- try {
|
|
|
- return dateFormater.get().parse(sdate);
|
|
|
- } catch (ParseException e) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 将字符串转为日期类型
|
|
|
+ *
|
|
|
+ * @param sdate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static Date toDate(String sdate) {
|
|
|
+ try {
|
|
|
+ return dateFormater.get().parse(sdate);
|
|
|
+ } catch (ParseException e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 以友好的方式显示时间
|
|
|
- *
|
|
|
- * @param sdate
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static String friendly_time(String sdate) {
|
|
|
- Date time = null;
|
|
|
- if (TimeZoneUtil.isInEasternEightZones()) {
|
|
|
- time = toDate(sdate);
|
|
|
- } else {
|
|
|
- time = TimeZoneUtil.transformTime(toDate(sdate),
|
|
|
- TimeZone.getTimeZone("GMT+08"), TimeZone.getDefault());
|
|
|
- }
|
|
|
- if (time == null) {
|
|
|
- return "Unknown";
|
|
|
- }
|
|
|
- String ftime = "";
|
|
|
- Calendar cal = Calendar.getInstance();
|
|
|
+ /**
|
|
|
+ * 以友好的方式显示时间
|
|
|
+ *
|
|
|
+ * @param sdate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String friendly_time(String sdate) {
|
|
|
+ Date time = null;
|
|
|
+ if (TimeZoneUtil.isInEasternEightZones()) {
|
|
|
+ time = toDate(sdate);
|
|
|
+ } else {
|
|
|
+ time = TimeZoneUtil.transformTime(toDate(sdate),
|
|
|
+ TimeZone.getTimeZone("GMT+08"), TimeZone.getDefault());
|
|
|
+ }
|
|
|
+ if (time == null) {
|
|
|
+ return "Unknown";
|
|
|
+ }
|
|
|
+ String ftime = "";
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
|
|
|
- // 判断是否是同一天
|
|
|
- String curDate = dateFormater2.get().format(cal.getTime());
|
|
|
- String paramDate = dateFormater2.get().format(time);
|
|
|
- if (curDate.equals(paramDate)) {
|
|
|
- int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
|
|
|
- if (hour == 0)
|
|
|
- ftime = Math.max(
|
|
|
- (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
|
|
|
- + "分钟前";
|
|
|
- else
|
|
|
- ftime = hour + "小时前";
|
|
|
- return ftime;
|
|
|
- }
|
|
|
+ // 判断是否是同一天
|
|
|
+ String curDate = dateFormater2.get().format(cal.getTime());
|
|
|
+ String paramDate = dateFormater2.get().format(time);
|
|
|
+ if (curDate.equals(paramDate)) {
|
|
|
+ int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
|
|
|
+ if (hour == 0)
|
|
|
+ ftime = Math.max(
|
|
|
+ (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
|
|
|
+ + "分钟前";
|
|
|
+ else
|
|
|
+ ftime = hour + "小时前";
|
|
|
+ return ftime;
|
|
|
+ }
|
|
|
|
|
|
- long lt = time.getTime() / 86400000;
|
|
|
- long ct = cal.getTimeInMillis() / 86400000;
|
|
|
- int days = (int) (ct - lt);
|
|
|
- if (days == 0) {
|
|
|
- int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
|
|
|
- if (hour == 0)
|
|
|
- ftime = Math.max(
|
|
|
- (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
|
|
|
- + "分钟前";
|
|
|
- else
|
|
|
- ftime = hour + "小时前";
|
|
|
- } else if (days == 1) {
|
|
|
- ftime = "昨天";
|
|
|
- } else if (days == 2) {
|
|
|
- ftime = "前天";
|
|
|
- } else if (days > 2 && days <= 10) {
|
|
|
- ftime = days + "天前";
|
|
|
- } else if (days > 10) {
|
|
|
- ftime = dateFormater2.get().format(time);
|
|
|
- }
|
|
|
- return ftime;
|
|
|
- }
|
|
|
+ long lt = time.getTime() / 86400000;
|
|
|
+ long ct = cal.getTimeInMillis() / 86400000;
|
|
|
+ int days = (int) (ct - lt);
|
|
|
+ if (days == 0) {
|
|
|
+ int hour = (int) ((cal.getTimeInMillis() - time.getTime()) / 3600000);
|
|
|
+ if (hour == 0)
|
|
|
+ ftime = Math.max(
|
|
|
+ (cal.getTimeInMillis() - time.getTime()) / 60000, 1)
|
|
|
+ + "分钟前";
|
|
|
+ else
|
|
|
+ ftime = hour + "小时前";
|
|
|
+ } else if (days == 1) {
|
|
|
+ ftime = "昨天";
|
|
|
+ } else if (days == 2) {
|
|
|
+ ftime = "前天";
|
|
|
+ } else if (days > 2 && days <= 10) {
|
|
|
+ ftime = days + "天前";
|
|
|
+ } else if (days > 10) {
|
|
|
+ ftime = dateFormater2.get().format(time);
|
|
|
+ }
|
|
|
+ return ftime;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 判断给定字符串时间是否为今日
|
|
|
- *
|
|
|
- * @param sdate
|
|
|
- * @return boolean
|
|
|
- */
|
|
|
- public static boolean isToday(String sdate) {
|
|
|
- boolean b = false;
|
|
|
- Date time = toDate(sdate);
|
|
|
- Date today = new Date();
|
|
|
- if (time != null) {
|
|
|
- String nowDate = dateFormater2.get().format(today);
|
|
|
- String timeDate = dateFormater2.get().format(time);
|
|
|
- if (nowDate.equals(timeDate)) {
|
|
|
- b = true;
|
|
|
- }
|
|
|
- }
|
|
|
- return b;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 判断给定字符串时间是否为今日
|
|
|
+ *
|
|
|
+ * @param sdate
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public static boolean isToday(String sdate) {
|
|
|
+ boolean b = false;
|
|
|
+ Date time = toDate(sdate);
|
|
|
+ Date today = new Date();
|
|
|
+ if (time != null) {
|
|
|
+ String nowDate = dateFormater2.get().format(today);
|
|
|
+ String timeDate = dateFormater2.get().format(time);
|
|
|
+ if (nowDate.equals(timeDate)) {
|
|
|
+ b = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return b;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 返回long类型的今天的日期
|
|
|
- *
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static long getToday() {
|
|
|
- Calendar cal = Calendar.getInstance();
|
|
|
- String curDate = dateFormater2.get().format(cal.getTime());
|
|
|
- curDate = curDate.replace("-", "");
|
|
|
- return Long.parseLong(curDate);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 返回long类型的今天的日期
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static long getToday() {
|
|
|
+ Calendar cal = Calendar.getInstance();
|
|
|
+ String curDate = dateFormater2.get().format(cal.getTime());
|
|
|
+ curDate = curDate.replace("-", "");
|
|
|
+ return Long.parseLong(curDate);
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 判断给定字符串是否空白串。 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串,返回true
|
|
|
- *
|
|
|
- * @param input
|
|
|
- * @return boolean
|
|
|
- */
|
|
|
- public static boolean isEmpty(String input) {
|
|
|
- if (input == null || "".equals(input))
|
|
|
- return true;
|
|
|
+ /**
|
|
|
+ * 判断给定字符串是否空白串。 空白串是指由空格、制表符、回车符、换行符组成的字符串 若输入字符串为null或空字符串,返回true
|
|
|
+ *
|
|
|
+ * @param input
|
|
|
+ * @return boolean
|
|
|
+ */
|
|
|
+ public static boolean isEmpty(String input) {
|
|
|
+ if (input == null || "".equals(input))
|
|
|
+ return true;
|
|
|
|
|
|
- for (int i = 0; i < input.length(); i++) {
|
|
|
- char c = input.charAt(i);
|
|
|
- if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- return true;
|
|
|
- }
|
|
|
+ for (int i = 0; i < input.length(); i++) {
|
|
|
+ char c = input.charAt(i);
|
|
|
+ if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 判断是不是一个合法的电子邮件地址
|
|
|
- *
|
|
|
- * @param email
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static boolean isEmail(String email) {
|
|
|
- if (email == null || email.trim().length() == 0)
|
|
|
- return false;
|
|
|
- return emailer.matcher(email).matches();
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 判断是不是一个合法的电子邮件地址
|
|
|
+ *
|
|
|
+ * @param email
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static boolean isEmail(String email) {
|
|
|
+ if (email == null || email.trim().length() == 0)
|
|
|
+ return false;
|
|
|
+ return emailer.matcher(email).matches();
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 字符串转整数
|
|
|
- *
|
|
|
- * @param str
|
|
|
- * @param defValue
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static int toInt(String str, int defValue) {
|
|
|
- try {
|
|
|
- return Integer.parseInt(str);
|
|
|
- } catch (Exception e) {
|
|
|
- }
|
|
|
- return defValue;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 字符串转整数
|
|
|
+ *
|
|
|
+ * @param str
|
|
|
+ * @param defValue
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static int toInt(String str, int defValue) {
|
|
|
+ try {
|
|
|
+ return Integer.parseInt(str);
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ return defValue;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 对象转整数
|
|
|
- *
|
|
|
- * @param obj
|
|
|
- * @return 转换异常返回 0
|
|
|
- */
|
|
|
- public static int toInt(Object obj) {
|
|
|
- if (obj == null)
|
|
|
- return 0;
|
|
|
- return toInt(obj.toString(), 0);
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 对象转整数
|
|
|
+ *
|
|
|
+ * @param obj
|
|
|
+ * @return 转换异常返回 0
|
|
|
+ */
|
|
|
+ public static int toInt(Object obj) {
|
|
|
+ if (obj == null)
|
|
|
+ return 0;
|
|
|
+ return toInt(obj.toString(), 0);
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 对象转整数
|
|
|
- *
|
|
|
- * @param obj
|
|
|
- * @return 转换异常返回 0
|
|
|
- */
|
|
|
- public static long toLong(String obj) {
|
|
|
- try {
|
|
|
- return Long.parseLong(obj);
|
|
|
- } catch (Exception e) {
|
|
|
- }
|
|
|
- return 0;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 对象转整数
|
|
|
+ *
|
|
|
+ * @param obj
|
|
|
+ * @return 转换异常返回 0
|
|
|
+ */
|
|
|
+ public static long toLong(String obj) {
|
|
|
+ try {
|
|
|
+ return Long.parseLong(obj);
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 字符串转布尔值
|
|
|
- *
|
|
|
- * @param b
|
|
|
- * @return 转换异常返回 false
|
|
|
- */
|
|
|
- public static boolean toBool(String b) {
|
|
|
- try {
|
|
|
- return Boolean.parseBoolean(b);
|
|
|
- } catch (Exception e) {
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 字符串转布尔值
|
|
|
+ *
|
|
|
+ * @param b
|
|
|
+ * @return 转换异常返回 false
|
|
|
+ */
|
|
|
+ public static boolean toBool(String b) {
|
|
|
+ try {
|
|
|
+ return Boolean.parseBoolean(b);
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
- /**
|
|
|
- * 将一个InputStream流转换成字符串
|
|
|
- *
|
|
|
- * @param is
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static String toConvertString(InputStream is) {
|
|
|
- StringBuffer res = new StringBuffer();
|
|
|
- InputStreamReader isr = new InputStreamReader(is);
|
|
|
- BufferedReader read = new BufferedReader(isr);
|
|
|
- try {
|
|
|
- String line;
|
|
|
- line = read.readLine();
|
|
|
- while (line != null) {
|
|
|
- res.append(line);
|
|
|
- line = read.readLine();
|
|
|
- }
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- try {
|
|
|
- if (null != isr) {
|
|
|
- isr.close();
|
|
|
- isr.close();
|
|
|
- }
|
|
|
- if (null != read) {
|
|
|
- read.close();
|
|
|
- read = null;
|
|
|
- }
|
|
|
- if (null != is) {
|
|
|
- is.close();
|
|
|
- is = null;
|
|
|
- }
|
|
|
- } catch (IOException e) {
|
|
|
- }
|
|
|
- }
|
|
|
- return res.toString();
|
|
|
- }
|
|
|
+ /**
|
|
|
+ * 将一个InputStream流转换成字符串
|
|
|
+ *
|
|
|
+ * @param is
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String toConvertString(InputStream is) {
|
|
|
+ StringBuffer res = new StringBuffer();
|
|
|
+ InputStreamReader isr = new InputStreamReader(is);
|
|
|
+ BufferedReader read = new BufferedReader(isr);
|
|
|
+ try {
|
|
|
+ String line;
|
|
|
+ line = read.readLine();
|
|
|
+ while (line != null) {
|
|
|
+ res.append(line);
|
|
|
+ line = read.readLine();
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ try {
|
|
|
+ if (null != isr) {
|
|
|
+ isr.close();
|
|
|
+ isr.close();
|
|
|
+ }
|
|
|
+ if (null != read) {
|
|
|
+ read.close();
|
|
|
+ read = null;
|
|
|
+ }
|
|
|
+ if (null != is) {
|
|
|
+ is.close();
|
|
|
+ is = null;
|
|
|
+ }
|
|
|
+ } catch (IOException e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return res.toString();
|
|
|
+ }
|
|
|
}
|