java js常用正则表达式和工具函数

14 篇文章 0 订阅
4 篇文章 0 订阅

###一. java常用工具函数
1.1 日期函数

//计算的是两者的相差天数 结果为非负整数
public static int getWorkingDaysBetweenTwoDates(Date startDate, Date endDate) {
		Calendar startCal;
		Calendar endCal;
		startCal = Calendar.getInstance();
		startCal.setTime(startDate);
		endCal = Calendar.getInstance();
		endCal.setTime(endDate);
		int workDays = 0;

		// Return 0 if start and end are the same
		if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {
			return 0;
		}

		if (startCal.getTimeInMillis() > endCal.getTimeInMillis()) {
			startCal.setTime(endDate);
			endCal.setTime(startDate);
		}

		do {
			startCal.add(Calendar.DAY_OF_MONTH, 1);
			if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY
					&& startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
				++workDays;
			}
		} while (startCal.getTimeInMillis() < endCal.getTimeInMillis());

		return workDays;
}
//按照指定格式获取当前日期字符串
public static String getCurrentDate(String format) {
	// TODO Auto-generated method stub
	Date date = new Date();
	return dateToString(date,format);
}
//将指定日期转换为字符串
private static String dateToString(Date date, String format) {
// TODO Auto-generated method stub
	if(ClassUtil.isNull(format)){
		format = "yyyy-MM-dd";
	}
	String newDate = "";
	SimpleDateFormat sdf = new SimpleDateFormat(format);
	try {
		if (date != null) {
			newDate = sdf.format(date);
		}
	} catch (Exception e) {
		logger.error(e.getMessage(), e);
	}
	return newDate;
}
	
//获取当前日期时间字符串
public static String getCurrentDateTimeStr(){
	SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
	Date dd = new Date();
	String str = format.format(dd);
	return str;
}
//20170901 add 获取当前季度
    public static String getCurrentQuarter(){
        Calendar currentCal = Calendar.getInstance();
        //currentCal.add(Calendar.MONTH,1);
        Integer year = currentCal.get(Calendar.YEAR);
        Integer month = currentCal.get(Calendar.MONTH); //当前月份减一
        //System.out.println("year: " + year + "; month: " + month);

        String quarter = "";
        if(year.toString().length() == 4){
            quarter = year.toString().substring(2, 4);
        }
        if(month >= 0 && month < 3){
            quarter += "Q1";
        }else if(month >= 3 && month < 6){
            quarter += "Q2";
        }else if(month >= 6 && month < 9){
            quarter += "Q3";
        }else if(month >= 9 && month < 12){
            quarter += "Q4";
        }

        //System.out.println("quarter: " + quarter);
        return quarter ;
    }

1.2 工具函数

public class ClassUtil {

   /**
	 *  输出对象的所有属性值
	 * */
  public static String toString(Object obj){ 
		String s = ""; 
		try { 
		s = getPropertyString(obj); 
		} catch (Exception e) { 
		// TODO Auto-generated catch block 
		e.printStackTrace(); 
		} 
		return s; 
 } 
public static String getPropertyString(Object entityName) throws Exception { 
		Class<? extends Object> c = entityName.getClass(); 
		Field field [] = c.getDeclaredFields(); 
		StringBuffer sb = new StringBuffer(); 

		sb.append("------ " + " begin ------\n"); 
		for(Field f : field){ 
		sb.append(f.getName()); 
		sb.append(" : "); 
		sb.append(invokeMethod(entityName, f.getName(), null)); 
		sb.append("\n"); 
		} 
		sb.append("------ " + " end ------\n"); 
		return sb.toString(); 
	} 
	
	public static Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception{
			Class<? extends Object> ownerClass = owner.getClass();
	
			methodName = methodName.substring(0, 1).toUpperCase() + methodName.substring(1);
			Method method = null;
			try {
			method = ownerClass.getMethod("get" + methodName);
			} catch (SecurityException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			} catch (NoSuchMethodException e) {
			// TODO Auto-generated catch block
			//e.printStackTrace();
			return " can't find 'get" + methodName + "' method";
			}
	
			return method.invoke(owner);
	}
	
	//从url地址中获取文件名
	public static String getFileNameFromUrl(String fileUrl)
	{
		String fileName = "";
		if(!ClassUtil.isNull(fileUrl)){
				Integer index = fileUrl.lastIndexOf("/");
	    		 if(index>-1){
	    			 fileName = fileUrl.substring(index+1);	 
	    		 }
		}		
		return fileName;
	}
		
	//若获取的变量为null 则返回空字符串
	public static String dealStrWithNull(String str){
		return (str == null? "":str);
	}
		
	//将文件url地址中的文件名进行编码后 以防文件名中存在加号等特殊符号  导致附件无法下载
	public static String encodeFileNameForUrl(String fileUrl) throws UnsupportedEncodingException{
		String fileName = "";
		if(!ClassUtil.isNull(fileUrl)){
			Integer index = fileUrl.lastIndexOf("/");
	    	if(index>-1){
	    			 String urlPrefix = fileUrl.substring(0,index+1);			 
	    			 fileName = fileUrl.substring(index+1);	
	    			 fileName = URLEncoder.encode(fileName,"UTF-8");
	    			 
	    			 fileUrl = urlPrefix + fileName;
	    		 }
		}
		return fileUrl;
	}
		
	//对文件url中的文件名进行utf-8解码  以防文件名中存在加号等特殊符号  导致附件无法下载
	public static String decodeFileNameForUrl(String fileUrl) throws UnsupportedEncodingException{
		String fileName = "";
		if(!ClassUtil.isNull(fileUrl)){
			Integer index = fileUrl.lastIndexOf("/");
		    	if(index>-1){
		    		String urlPrefix = fileUrl.substring(0,index+1);			 
		    		fileName = fileUrl.substring(index+1);	
		    		fileName = URLDecoder.decode(fileName,"UTF-8");
		    		fileUrl = urlPrefix + fileName;
		    	}
		}
				
		return fileUrl;
	}
		
	//去掉字符串中的制表符 换行符 空格  暂时未使用
	public static String replaceBlank(String str) {
			String dest = "";
			if (str!=null) {
				Pattern p = Pattern.compile("\\s*|\t|\r|\n");
				Matcher m = p.matcher(str);
				dest = m.replaceAll("");
			}
			return dest;
	}
	
	// 判断一个字符是否是中文
    public static boolean isChineseChar(char c) {
        return c >= 0x4E00 &&  c <= 0x9FA5;// 根据字节码判断
    }

    //针对数据库varchar类型 计算字符串长度:中文字符数*2 + 英文字符数<= 数据库字段设定长度
    // 判断一个字符串是否含有中文
    public static Integer getDBStrLength(String str) {
       Integer len = 0;
       if(str != null && str.length()>0){
           char[] arr = str.toCharArray();
           for(int i=0; i<arr.length; i++){
               if(isChineseChar(arr[i])){
                    len += 2;
               }else{
                   len += 1;
               }
           }//for
       }

       return len;
    }

    //根据字符串长度以及长度限制  对字符串进行截断处理
    public static String getTruncateStrByMaxLength(String str,Integer maxLen) {
        String result = "";
        Integer len = 0;
        if(str != null && str.length()>0){
            char[] arr = str.toCharArray();
            for(int i=0; i<arr.length; i++){
                if(isChineseChar(arr[i])){
                    len += 2;
                }else{
                    len += 1;
                }
                if(len <= maxLen){
                     result += arr[i];
                }else{
                    break;
                }
            }//for
        }

        return result;
    }	
    //针对字段内容中含有逗号的字符串 双引号内的逗号不分割  双引号外的逗号进行分割
    public static String[] splitStrWithComma(String str){
        String[] strArr = str.trim().split(",(?=([^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)",-1); //双引号内的逗号不分割  双引号外的逗号进行分割
        return strArr;
    }
	//读取props.properties
	public static void main(String[] args) throws UnsupportedEncodingException{
			/*ResourceBundle rb = ResourceBundle.getBundle("props.properties");
			String temp = rb.getString("ATTACHMENT_SIZE");
			System.out.println("temp: " + temp);*/
			
			//trim() 可去掉字符串前后的换行符和空格
			System.out.println(new String("just do it!\n").trim());
			System.out.println("aaa");
			String str = "aa \n bb \n cc ";
			str = str.trim().replace("\n", "");
			System.out.println("str: " + str + "; str length: " + str.split(";").length);
			System.out.println("aaa");
	}
}

1.3cookie操作

public class CookieUtil {
    //20170807 add 根据获取cookie名 获取cookie值
    public static String getCookieValueByName(HttpServletRequest request, String cookieName){
        Cookie[] cookieArr= request.getCookies();
        //logger.info("cookieArr length: " + cookieArr.length);
        if(cookieArr == null){
            return "";
        }

        String cookie_value = "";
        for(int i=0; i<cookieArr.length; i++){
            if(cookieArr[i].getName().equals(cookieName)){
                cookie_value = cookieArr[i].getValue();
                break;
            }
        }
        return cookie_value;
    }

}

###二. js
2.1 正则表达式
2.1.1 整数或者小数

//整数或者两位以内的小数
if(!((/^\d+(\.\d{1,2})?$/).test(inputValue) )){
	alert("输入应为整数或者两位以内的小数");
	return false;
}
//只能是非负整数或者只有一位小数
var reg = /^[0-9]\d*([.][0-9])?$/; 
if(!reg.test(work_hour)){  
	g_validFlag = 0;
	alert("只能是非负整数或小数点后一位的非负小数");
	return;
}  	

2.1.2 是否为非负整数

//是否为非负整数
function isDigital(ele){
	return(/^[0-9]+$/.test(ele));
}
//判断是否是非负数
function notNegativeNumber(value){
	if(/^\d+(\.\d+)?$/.test(value)){
		return true;
	}
	return false;
}

2.1.3 判断是否为数字以及浮点运算

//判断输入是否是整数
function isDigital(str){
	if(/^\d+$/.test(str)){
		return true;
	} 
	return false;
}

//20160711 单纯的浮点数相乘会出现  0.29*100 = 0.289999996...的情况
function accMul(num1,num2){
    var m=0,s1=num1.toString(),s2=num2.toString();
    try{m+=s1.split(".")[1].length}catch(e){};
    try{m+=s2.split(".")[1].length}catch(e){};
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}

2.1.4 校验密码强度

//20170822 add 检验密码强度 8位以下纯数字、纯字母密码为弱密码
function checkPasswordStrength(password){
    var reg1 = new RegExp(/^[0-9]{1,7}$/);
    var reg2 = new RegExp(/^[A-Za-z]{1,7}$/);
    //alert(reg1.test(password));
    //alert(reg2.test(password));
    if(reg1.test(password) || reg2.test(password)){
        return false;
    }else{
        return true;
    }
}

2.2 数组排序
对象数组排序,如果name对应值相同,则按minor进行排序

var by = function(name,minor){
 return function(o,p){
   var a,b;
   if(o && p && typeof o === 'object' && typeof p ==='object'){
     a = o[name];
     b = p[name];
     if(a === b){
       return typeof minor === 'function' ? minor(o,p):0;
     }
     if(typeof a === typeof b){
       return a < b ? -1:1;
     }
     return typeof a < typeof b ? -1 : 1;
   }else{
     thro("error");
   }
 }
}

employees.sort(by('age',by('name')));

2.3 重载函数

if(!(Array.prototype.indexOf)) {
    Array.prototype.indexOf = function (value) {

        for (var i = 0; i < this.length; i++) {
            if (this[i] == value) return i;
        }
        return -1;
    };
}
if(!(String.prototype.trim)) {
    String.prototype.trim = function () {
        if (this != undefined) {
            return this.replace(/(^\s*)|(\s*$)/g, '');
        } else {
            return "";
        }
    };
}
Date.prototype.format = function(format) {
    var date = {
        "M+": this.getMonth() + 1,
        "d+": this.getDate(),
        "h+": this.getHours(),
        "m+": this.getMinutes(),
        "s+": this.getSeconds(),
        "q+": Math.floor((this.getMonth() + 3) / 3),
        "S+": this.getMilliseconds()
    };
    if (/(y+)/i.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
    }
    for (var k in date) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1
                ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
        }
    }
    return format;
};

2.4 其他函数

//将所有按钮置为无效
function disableAllButtons(){
    var btns = document.getElementsByTagName("button");
    for(var i=0;i<btns.length;i++){
        btns[i].disabled = true;
    }

}
function enableAllButtons(){
    var btns = document.getElementsByTagName("button");
    for(var i=0;i<btns.length;i++){
        btns[i].disabled = "";
    }

}

/将容器(jquery对象)的滑动条滑至类名为className的第index个条目
function scrollToLocation(mainContainer,className,index) {
    var scrollToContainer = mainContainer.find('.'+ className + ':eq(' + index + ')');
    console.log(scrollToContainer);
    //scrollToContainer = mainContainer.find('.son-panel:eq(5)');//滚动到<div id="thisMainPanel">中类名为son-panel的第六个处 :last 最后一个
    //非动画效果
    //mainContainer.scrollTop(
    //  scrollToContainer.offset().top - mainContainer.offset().top + mainContainer.scrollTop()
    //);

    var finalScrollTop = scrollToContainer.offset().top - mainContainer.offset().top-100 + mainContainer.scrollTop();
    //alert("finalScrollTop: " + finalScrollTop);

    //动画效果
    mainContainer.animate({
        scrollTop:finalScrollTop
    }, 0);//1秒滑动到指定位置

}

var classUtil = {
    //获取对象数组中属性key对应的所有value值
    getAllValuesByKey:function(objArr,key){
        var valueArr = [];
        if(objArr == undefined || key == undefined){
            return [];
        }
        $.each(objArr,function(index,obj){
            valueArr.push(obj[key]);
        });

        return valueArr;
    },
    getObjByKeyValue:function(objArr,key,value){
        var target = null;
        $.each(objArr,function(index,obj){

            if(obj[key] == value){
                target = obj;
                return false;
            }
        });
        return target;
    },
    isEmpty:function(value){
        return value == undefined || value == "";
    },
    dealStrValue:function(value){
        if(value == undefined || value == "undefined"){
            return "";
        }else{
            return value;
        }
    },
    dealDateValue:function(value){
        return value == undefined?"":new Date(value).format('yyyy-MM-dd hh:mm:ss');
    },
    /**
     * 多个text/value值间用逗号隔开
     * @param objArr 对象列表
     * @param textStr 用逗号隔开的text字符串
     * @param textProperty text对应的对象中属性
     * @param valueProperty value对应的对象中属性
     * */
    getValuesByTextStr:function(objArr,textStr,textPropery,valueProperty){
        var values = "";
        if(textStr == undefined || textStr == ""){
            return values;
        }
        var textArr = textStr.split(",");
        $.each(textArr,function(index,text){
            for(var i=0; i<objArr.length; i++){
                if(objArr[i][textPropery] == text ){
                    if(values == ""){
                        values = objArr[i][valueProperty];
                    }else{
                        values += "," + objArr[i][valueProperty];
                    }

                    break;
                }
            }//for
        });
        return values;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值