| | |
| | | |
| | | 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 |
| | | */ |
| | | @SuppressWarnings("ALL") |
| | | 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); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 字符串转为日期时间 |
| | | */ |
| | | public static Date parseTime(String str) { |
| | | try { |
| | | return YMDHMS_FORMAT.parse(str); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 判断值是否为日期格式 |
| | | */ |
| | | 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字符串 |
| | | * |
| | | * @param wkt |
| | | * @return |
| | | */ |
| | | 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; |
| | |
| | | return m.matches(); |
| | | } |
| | | |
| | | /** |
| | | * 校验密码是/否合法 |
| | | * |
| | | * @param pwd 密码 |
| | | * @return 是/否为无效的 |
| | | */ |
| | | public static boolean isPwdInvalid(String pwd) { |
| | | return !Pattern.matches(StaticData.PWD_REG, pwd); |
| | | } |
| | | |
| | | /** |
| | | * 获取GUID |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getGuid() { |
| | | return UUID.randomUUID().toString(); |
| | | } |
| | | |
| | | /** |
| | | * 连接List集合 |
| | | * |
| | | * @param list list 整数集合 |
| | | * @param join join 连接字符 |
| | | * @param <T> 泛型类 |
| | | * @return 字符串 |
| | | */ |
| | | public static long getMinuteDifference(Timestamp ts) { |
| | | return (ts.getTime() - System.currentTimeMillis()) / 1000 / 60; |
| | | } |
| | | |
| | | 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() + join); |
| | | 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; |
| | | } |
| | | } |