package com.lf.server.helper; import com.lf.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字符串 * * @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; } 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 泛型类 * @return 字符串 */ public static String join(List 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 strToIntegers(String str) { if (StringHelper.isEmpty(str)) { return null; } List list = new ArrayList<>(); for (String s : str.split(StaticData.COMMA)) { list.add(Integer.parseInt(s)); } return list; } }