StringUtil工具类

来源:互联网 发布:php做app 编辑:程序博客网 时间:2024/05/22 03:51
package com.util;import java.math.BigDecimal;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.regex.Matcher;import java.util.regex.Pattern;public class StringUtil {public static boolean isEmpty(Object obj){return "".equalsIgnoreCase(parseString(obj));}/** * 过滤空对象 * @param obj * @return */public static String parseString(Object obj){return parseString(obj, "");}/** * 过滤空对象 * @param obj * @return */public static String parseString(Object obj,String str){boolean flag = false;if(obj == null){flag = true;}if(flag == false){if("null".equalsIgnoreCase(obj.toString()) || "".equalsIgnoreCase(obj.toString())){flag = true;}}if(flag){return str;}else{return obj.toString().trim();}}/** * 转换Long类型  * @param obj * @return */public static Long parseLong(Object obj){return parseLong(obj,null);}/** * 转换Long类型  * @param obj * @return */public static Long parseLong(Object obj,Long value){if(isEmpty(obj)){return value;}String str = parseString(obj);return Long.parseLong(str);}/** * 转换Integer类型  * @param obj * @return */public static Integer parseInteger(Object obj){return parseInteger(obj,null);}/** * 转换Integer类型  * @param obj * @return */public static Integer parseInteger(Object obj,Integer value){if(isEmpty(obj)){return value;}String str = parseString(obj);return Integer.valueOf(str);}/** * 转换Double类型  * @param obj * @return */public static Double parseDouble(Object obj){return parseDouble(obj,null);}/** * 转换Double类型  * @param obj * @return */public static Double parseDouble(Object obj,Double data){String str = parseString(obj);if("".equalsIgnoreCase(str)){if(isEmpty(data)){return null;}return data;}return Double.parseDouble(str);}/** * 转换Double类型  * @param obj * @return */public static String formatDate(Date date,String format){SimpleDateFormat sdf = new SimpleDateFormat(format);if(date == null){return "";}try{return sdf.format(date);}catch(Exception ex){return "";}}/** * 转换Date类型  * @param obj * @return * @throws ParseException  */public static Date parseDate(Object obj,String format) throws ParseException{String str = parseString(obj);if("".equalsIgnoreCase(str)){return null;}SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.parse(str);}/** * 过滤回车符 * @param value * @return */public static String filterEnter(String value){value = parseString(value);value = value.replaceAll("\r", "");value = value.replaceAll("\n", "<br/>");return value;}/** * 校验日期 * @param value * @return */public static boolean checkDate(String date){String eL = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1][0-9])|([2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";Pattern p = Pattern.compile(eL);Matcher m = p.matcher(date);boolean b = m.matches();return b;}/** * 过滤掉SQL中包含 1 = 1 部分内容 * @param sql * @return */public static String filterSQL(String sql){Pattern pattern1 = Pattern.compile("[\\s]*(.+)[\\s]*=[\\s]*\\1[\\s]+((and)|(or))[\\s]+",Pattern.CASE_INSENSITIVE);Pattern pattern2 = Pattern.compile("[\\s]*((and)|(or))[\\s]+(.+)[\\s]*=[\\s]*\\4[\\)]",Pattern.CASE_INSENSITIVE);Pattern pattern3 = Pattern.compile("[\\s]*((and)|(or))[\\s]+(.+)[\\s]*=[\\s]*\\4[\\s]+",Pattern.CASE_INSENSITIVE);Pattern pattern4 = Pattern.compile("[\\s]*where[\\s]+(.*)[\\s]*=[\\s]*\\1[\\)]",Pattern.CASE_INSENSITIVE);Pattern pattern5 = Pattern.compile("[\\s]*where[\\s]+(.*)[\\s]*=[\\s]*\\1[\\s]+",Pattern.CASE_INSENSITIVE);String str = sql;str = " " + str;str = str + " ";Matcher matcher = pattern1.matcher(str);while (matcher.find()) {str = matcher.replaceAll(" ");}matcher = pattern2.matcher(str);while (matcher.find()) {str = matcher.replaceAll(" ) ");}matcher = pattern3.matcher(str);while (matcher.find()) {str = matcher.replaceAll(" ");}matcher = pattern4.matcher(str);while (matcher.find()) {str = matcher.replaceAll(" ) ");}matcher = pattern5.matcher(str);while (matcher.find()) {str = matcher.replaceAll(" ");}return str.trim();}/** * 校验是否为小数 * @param value * @return */public static boolean checkFloat(String str){boolean b = str.matches("^(([0-9]+\\.[0-9]+)|([0-9]*))$");return b;}/** * 校验数字 * @param value * @return */public static boolean checkNumber(String str){boolean b = str.matches("[\\d]+");return b;}/** * 获取日期相差天数 * @param beginDateStr 日期1 格式:yyyy-MM-dd * @param beginDateStr 日期2 格式:yyyy-MM-dd * @return 日期相差天数 * @throws Exception  */public static Long getDiffDay(String beginDateStr,String endDateStr) throws Exception{Date beginDate = parseDate(beginDateStr,"yyyy-MM-dd");Date endDate = parseDate(endDateStr,"yyyy-MM-dd");return getDiffDay(beginDate,endDate);}/** * 获取日期相差天数 * @param beginDateStr 日期1  * @param beginDateStr 日期2  * @return 日期相差天数 * @throws Exception  */public static Long getDiffDay(Date beginDate,Date endDate){Long checkday = 0L;checkday = (endDate.getTime() - beginDate.getTime()) / (1000 * 24 * 60 * 60);return checkday;}/** * 判断内容是否相同  * @param content 原内容 * @param matchStr 匹配内容 * @param defaultStr 默认内容 * @return */public static String parseString(Object content,String matchStr,String defaultStr) {String str = parseString(content);if (str.equalsIgnoreCase(matchStr)) {return parseString(defaultStr);} else {return str;}}public static void main(String []args){//System.out.println(filterSQL("(select * from dual where 1=1 ) SELECT '' REAL_NAME,T.MOBILE,'' CUST_ID FROM JUNHONG_SENDSMS_MOBILE T WHERE 1 = 1 AND (LENGTH(T.MOBILE) = 11 OR LENGTH(T.MOBILE) = 12) and 1 = 12 or 22  = 22 order by id desc  (select * from dual where 1=2 and 12 = 123 or 12 = 12 order by id desc where 1 = 1 ) "));System.out.println(parseString("0","1","133"));}/** * 精确小数位数 * @param dou 小数 * @param num1 位数 * @param num2 1.四舍五入 2.舍去小数 * @return */public static Double exactDouble(Double dou,int num1,int num2){if(isEmpty(dou)){return null;}int roundingMode = 4;BigDecimal bigDec = new BigDecimal(dou);bigDec = bigDec.setScale(10,roundingMode);dou = bigDec.doubleValue();int tmpNum = 1;for(int i=0;i<num1;i++){tmpNum *= 10;}if(num2 == 1){return StringUtil.parseDouble((Math.round(dou*tmpNum)/1.0D/tmpNum));}else if(num2 == 2){return (Math.floor(dou*tmpNum)/tmpNum);}else{return null;}}public static String subString(String str, int len, String defaultStr) {if(str == null) {str = "";} else if(str.length() > len) {str = str.substring(0, len) + defaultStr;}return str;}public static String numberFormat(Double number, int ceil) {String str = "";if(number != null) {BigDecimal bd = new BigDecimal(number);str = bd.setScale(ceil, BigDecimal.ROUND_HALF_UP).toPlainString();}return str;}}

0 0
原创粉丝点击