package com.moon.server.helper;
|
|
import com.moon.server.entity.all.StaticData;
|
|
import java.sql.Timestamp;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.UUID;
|
import java.util.regex.Matcher;
|
import java.util.regex.Pattern;
|
|
/**
|
* 字符串帮助类
|
* @author WWW
|
*/
|
public class StringHelper {
|
/**
|
* 数字正则
|
*/
|
public static final Pattern NUMBER_PATTERN = Pattern.compile("-?\\d+(\\.\\d+)?");
|
|
/**
|
* 格式化当前系统日期 1
|
*/
|
public static final SimpleDateFormat YMD_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
|
|
/**
|
* 格式化当前系统日期 2
|
*/
|
public static final SimpleDateFormat YMDHMS_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
/**
|
* 格式化当前系统日期 3
|
*/
|
public static final SimpleDateFormat YMD2_FORMAT = new SimpleDateFormat("yyyyMMdd");
|
|
/**
|
* 格式化当前系统日期 4
|
*/
|
public static final SimpleDateFormat YMDHMS2_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
/**
|
* 判断字符串,是否为整数
|
*/
|
public static boolean isInteger(String str) {
|
return str != null && str.matches("[0-9]+");
|
}
|
|
/**
|
* 判断字符串,是否为浮点数
|
*/
|
public static boolean isNumeric(String str) {
|
return str != null && str.matches("-?\\d+(\\.\\d+)?");
|
}
|
|
/**
|
* 判断字符串,是否为浮点数
|
*/
|
public static boolean isNumeric2(String str) {
|
return str != null && NUMBER_PATTERN.matcher(str).matches();
|
}
|
|
/**
|
* 日期正则
|
*/
|
public static Pattern datePattern = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/]((((0?[13578])|(1[02]))[\\-\\/]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/]((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/]((((0?[13578])|(1[02]))[\\-\\/]((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/]((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/]((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
|
|
/**
|
* SQL正则
|
*/
|
public static Pattern sqlPattern = Pattern.compile("|and|exec|execute|insert|select|delete|update|count|drop|\\*|%|chr|mid|master|truncate|char|declare|sitename|net user|xp_cmdshell|;|or|-|\\+|,|like");
|
|
/**
|
* 字符串转为日期
|
*/
|
public static Date parseDate(String str) {
|
try {
|
return YMD_FORMAT.parse(str);
|
} catch (Exception ex) {
|
return null;
|
}
|
}
|
|
/**
|
* 字符串转为日期时间
|
*/
|
public static Date parseTime(String str) {
|
try {
|
return YMDHMS_FORMAT.parse(str);
|
} catch (Exception e) {
|
return null;
|
}
|
}
|
|
/**
|
* 判断值是否为日期格式
|
*/
|
public static boolean isDate(String strDate) {
|
Matcher m = datePattern.matcher(strDate);
|
|
return m.matches();
|
}
|
|
/**
|
* 字符串,是否为null 或 ""
|
*/
|
public static boolean isNull(String str) {
|
return null == str || str.length() == 0;
|
}
|
|
/**
|
* 字符串,是否为空null和空格
|
*/
|
public static boolean isEmpty(String str) {
|
return null == str || "".equals(str.trim());
|
}
|
|
/**
|
* 获取 like 字符串
|
*/
|
public static String getLikeStr(String str) {
|
return StringHelper.isEmpty(str) ? null : "%" + str.trim() + "%";
|
}
|
|
/**
|
* 获取 like 字符串
|
*/
|
public static String getLikeUpperStr(String str) {
|
return StringHelper.isEmpty(str) ? null : "%" + str.trim().toUpperCase() + "%";
|
}
|
|
/**
|
* 获取 右like 字符串
|
*/
|
public static String getRightLike(String str) {
|
return StringHelper.isEmpty(str) ? null : str.trim() + "%";
|
}
|
|
/**
|
* 获取图形的WKT字符串
|
*/
|
public static String getGeomWkt(String wkt) {
|
if (StringHelper.isEmpty(wkt)) {
|
return "null";
|
}
|
|
return String.format("ST_GeomFromText('%s')", wkt);
|
}
|
|
/**
|
* 首字母大写
|
*/
|
public static String firstCharToUpperCase(String str) {
|
return str.substring(0, 1).toUpperCase() + str.substring(1);
|
}
|
|
/**
|
* 首字母小写
|
*/
|
public static String firstCharToLowerCase(String str) {
|
return str.substring(0, 1).toLowerCase() + str.substring(1);
|
}
|
|
/**
|
* 判断值是否存在SQL注入
|
*
|
* @param str 字符串
|
* @return 是/否
|
*/
|
public static boolean isSqlInjection(String str) {
|
if (null == str) {
|
return false;
|
}
|
|
Matcher m = sqlPattern.matcher(str);
|
|
return m.matches();
|
}
|
|
/**
|
* 校验密码是/否合法
|
*
|
* @param pwd 密码
|
* @return 是/否为无效的
|
*/
|
public static boolean isPwdInvalid(String pwd) {
|
return !Pattern.matches(StaticData.PWD_REG, pwd);
|
}
|
|
/**
|
* 获取GUID
|
*/
|
public static String getGuid() {
|
return UUID.randomUUID().toString();
|
}
|
|
/**
|
* 获取分钟差数
|
*/
|
public static long getMinuteDifference(Timestamp ts) {
|
return (ts.getTime() - System.currentTimeMillis()) / 1000 / 60;
|
}
|
|
/**
|
* 连接List集合
|
*
|
* @param list list 整数集合
|
* @param join join 连接字符
|
* @param <T> 泛型类
|
* @return 字符串
|
*/
|
public static <T> String join(List<T> list, String join) {
|
if (null == list || list.isEmpty()) {
|
return "";
|
}
|
|
StringBuilder sb = new StringBuilder();
|
for (T t : list) {
|
if (null != t) {
|
sb.append(t.toString()).append(join);
|
}
|
}
|
|
if (sb.length() > 0 && sb.lastIndexOf(join) == sb.length() - join.length()) {
|
// 删除从索引 start 开始到 end 之间的字符,即 前包括 后不包括。
|
sb.delete(sb.length() - join.length(), sb.length());
|
}
|
|
return sb.toString();
|
}
|
|
/**
|
* 字符串转整数集合
|
*/
|
public static List<Integer> strToIntegers(String str) {
|
if (StringHelper.isEmpty(str)) {
|
return null;
|
}
|
|
List<Integer> list = new ArrayList<>();
|
for (String s : str.split(StaticData.COMMA)) {
|
list.add(Integer.parseInt(s));
|
}
|
|
return list;
|
}
|
}
|