StringUtils 正则校验

public class StringUtils {

    /**
     * 如果str为null,返回“”,否则返回str
     * @param str
     * @return
     */
    public static String isNull(String str) {
        if (str == null) {
            return "";
        }
        return str.trim();
    }

    public static String isNull(Object o) {
        if (o == null) {
            return "";
        }
        String str="";
        if(o instanceof String){
            str=(String)o;
        }else{
            str=o.toString();
        }
        return str;
    }
    
    
    /**
     * 检验手机号
     * @param phone
     * @return
     */
    public static boolean isPhone(String phone){
        phone = isNull(phone);
        Pattern regex = Pattern
//                .compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
                .compile("^((1[34578]{1}[0-9]))\\d{8}$");
        Matcher matcher = regex.matcher(phone);
        boolean isMatched = matcher.matches();
        return isMatched;
    }
    
    /**
     * 检查是否全中文,返回true 表示是 反之为否
     * @param realname
     * @return
     */
    public static boolean isChinese(String realname){
        realname = isNull(realname);
        Pattern regex = Pattern.compile("[\\u4e00-\\u9fa5]{2,25}");
        Matcher matcher = regex.matcher(realname);
        boolean isMatched = matcher.matches();
        return isMatched;
    }
    
    /**
     * 检查email是否是邮箱格式,返回true表示是,反之为否
     * @param email
     * @return
     */
    public static boolean isEmail(String email) {
        email = isNull(email);
        Pattern regex = Pattern
                .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
        Matcher matcher = regex.matcher(email);
        boolean isMatched = matcher.matches();
        return isMatched;
    }
    
    /**
     * 检查身份证的格式,返回true表示是,反之为否
     * @param email
     * @return
     */
    public static boolean isCard(String cardId) {
        cardId = isNull(cardId);
        //身份证正则表达式(15位) 
        Pattern isIDCard1=Pattern.compile("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$"); 
        //身份证正则表达式(18位) 
        Pattern isIDCard2=Pattern.compile("^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$"); 
        Matcher matcher1= isIDCard1.matcher(cardId);
        Matcher matcher2= isIDCard2.matcher(cardId);
        boolean isMatched = matcher1.matches()||matcher2.matches();
        return isMatched;
    }

    /**
     * 判断字符串是否为整数
     * @param str
     * @return
     */
    public static boolean isInteger(String str) {
        if (isEmpty(str)) {
            return false;
        }
        Pattern regex = Pattern.compile("\\d*");
        Matcher matcher = regex.matcher(str);
        boolean isMatched = matcher.matches();
        return isMatched;
    }

    /**
     * 判断字符串是否为数字
     * @param str
     * @return
     */
    public static boolean isNumber(String str) {
        if (isEmpty(str)) {
            return false;
        }
        Pattern regex = Pattern.compile("(-)?\\d*(.\\d*)?");
        Matcher matcher = regex.matcher(str);
        boolean isMatched = matcher.matches();
        return isMatched;
    }
    
    /**
     * 判断字符串是否为纯字母
     * @param str
     * @return
     */
    public static boolean isEnglish(String str) {
        if (isEmpty(str)) {
            return false;
        }
        Pattern regex = Pattern.compile("[a-zA-Z]{1,}");
        Matcher matcher = regex.matcher(str);
        boolean isMatched = matcher.matches();
        return isMatched;
    }
    
    /**
     * 判断字符串是否为空
     * @param str
     * @return
     */
    public static boolean isEmpty(String str) {
        if (str == null || "".equals(str)) {
            return true;
        }
        return false;
    }

    /**
     * 首字母大写
     * @param s
     * @return
     */
    public static String firstCharUpperCase(String s) {
        StringBuffer sb = new StringBuffer(s.substring(0, 1).toUpperCase());
        sb.append(s.substring(1, s.length()));
        return sb.toString();
    }
    
    public static String hideChar(String str,int len){
        if(str==null) return null;
        char[] chars=str.toCharArray();
        for(int i=1;i<chars.length-1;i++){
            if(i<len){
                chars[i]='*';
            }
        }
        str=new String(chars);
        return str;
    }
    
    public static String hideFirstChar(String str,int len){
        if(str==null) return null;
        char[] chars=str.toCharArray();
        if(str.length()<=len){
            for(int i=0;i<1;i++){
                chars[i]='*';
            }
        }else{
            for(int i=0;i<len;i++){
                chars[i]='*';
            }
        }
        str=new String(chars);
        return str;
    }

    public static String hideLastChar(String str,int len){
        if(str==null) return null;
        char[] chars=str.toCharArray();
        if(str.length()<=len){
            for(int i=0;i<chars.length;i++){
                chars[i]='*';
            }
        }else{
            for(int i=chars.length-1;i>chars.length-len-1;i--){
                chars[i]='*';
            }
        }
        str=new String(chars);
        return str;
    }

    public static String hideNumber(String str){
        if(str==null) return null;
        char[] chars=str.toCharArray();
        if(str.length()<=7){
            for(int i=0;i<chars.length;i++){
                chars[i]='*';
            }
        }else{
            for(int i=3;i<chars.length-4;i++){
                chars[i]='*';
            }
        }
        str=new String(chars);
        return str;
    }
    
    /**
     * 
     * @return
     */
    public static String format(String str,int len){
        if(str==null) return "-";
        if(str.length()<=len){
            int pushlen=len-str.length();
            StringBuffer sb=new StringBuffer();
            for(int i=0;i<pushlen;i++){
                sb.append("0");
            }
            sb.append(str);
            str=sb.toString();
        }else{
            String newStr=str.substring(0, len);
            str=newStr;
        }
        return str;
    }
    
    public static String contact(Object[] args){
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<args.length;i++){
            sb.append(args[i]);
            if(i<args.length-1){
                sb.append(",");
            }
        }
        return sb.toString();
    }
    
    /**
     * 是否包含在以“,”隔开字符串内
     * @param s
     * @param type
     * @return
     */
    public static boolean isInSplit(String s,String type){
        if(isNull(s).equals("")){
            return false;
        }
        List<String> list=Arrays.asList(s.split(","));
        if(list.contains(type)){
            return true;
        }
        return false;
    }
    
    public static boolean isBlank(String str){
        return StringUtils.isNull(str).equals("");
    }
    
    public synchronized static String generateTradeNO(long userid,String type){
        String s;
        s = type + userid + getFullTimeStr();
        return s;
    }
    
    public static String getFullTimeStr(){
        String s=DateUtils.dateStr3(Calendar.getInstance().getTime());
        return s;
    }

    public static String array2Str(Object[] arr){
        StringBuffer s=new StringBuffer();
        for(int i=0;i<arr.length;i++){
            s.append(arr[i]);
            if(i<arr.length-1){
                s.append(",");
            }
        }
        return s.toString();
    }
    
    public static String array2Str(int[] arr){
        StringBuffer s=new StringBuffer();
        for(int i=0;i<arr.length;i++){
            s.append(arr[i]);
            if(i<arr.length-1){
                s.append(",");
            }
        }
        return s.toString();
    }
    
    
    /**
     * 指定起始位置字符串隐藏
     * @param str
     * @param index1
     * @param index2
     * @return
     */
    public static String hideStr(String str, int index1, int index2) {
        if (str == null)
            return null;
        String str1 = str.substring(index1, index2);
        String str2 = str.substring(index2);
        String str3 = "";
        if (index1 > 0) {
            str1 = str.substring(0, index1);
            str2 = str.substring(index1, index2);
            str3 = str.substring(index2);
        }
        char[] chars = str2.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            chars[i] = '*';
        }
        str2 = new String(chars);
        String str4 = str1 + str2 + str3;
        return str4;
    }

    // 四舍五入保留两位小数点
    public static String SetNumberFractionDigits(String str) {
        NumberFormat nf = NumberFormat.getNumberInstance();
        nf.setMaximumFractionDigits(2);
        nf.setMinimumFractionDigits(2);
        return nf.format(Float.valueOf(str));
    }
    public static String getMonday(String the_rq){
         int n=getXC_days(the_rq);
         //System.out.println("n="+n);
         n=n*-1;
         return Q_N_Day(n,the_rq);
     }

     

    //获取输入日期的星期天日期

     public static String getSunday(String the_rq){
          int n=getXC_days(the_rq);
          //System.out.println("n="+n);
          n=(6-(n*-1))*-1;
          return Q_N_Day(n,the_rq);
      }

    // 获得输入日期与本周一相差的天数
     public static int getXC_days(String rq){
         SimpleDateFormat formatYMD=new SimpleDateFormat("yyyy-MM-dd");//formatYMD表示的是yyyy-MM-dd格式
         SimpleDateFormat formatD=new SimpleDateFormat("E");//"E"表示"day in week"
         Date d=null;
         String weekDay="";
         int xcrq=0;
         try{
             d=formatYMD.parse(rq);//将String 转换为符合格式的日期
             weekDay=formatD.format(d);
             if(weekDay.equals("星期一")){
                 xcrq=0;
             }else{
                 if(weekDay.equals("星期二")){
                     xcrq=-1;
                 }else{
                     if(weekDay.equals("星期三")){
                         xcrq=-2;
                     }else{
                         if(weekDay.equals("星期四")){
                             xcrq=-3;
                         }else{
                             if(weekDay.equals("星期五")){
                                 xcrq=-4;
                             }else{
                                 if(weekDay.equals("星期六")){
                                     xcrq=-5;
                                 }else{
                                     if(weekDay.equals("星期日")){
                                         xcrq=-6;
                                     }

                                 }

                             }

                         }
                     }
                 }
             }
         }catch (Exception e){
             e.printStackTrace();
         }
         return xcrq;
     }

     public static String Q_N_Day(int N,String d1){//
            String []d2=d1.split("-");
            int year=Integer.parseInt(d2[0]);
            int month=Integer.parseInt(d2[1]);
            int day=Integer.parseInt(d2[2]);
            if(day-N<=0){
                if(month==1){
                   year=year-1;
                   month=12;
                   day = day + 31-N;
                }else{
                    month=month-1;
                    if (month == 2) {
                        if (year % 4 == 0) {
                            day = day + 29-N;
                        } else {
                            day = day + 28-N;
                        }
                    }else{
                        if(month==4||month==6||month==9||month==11){
                            day=day+30-N;
                        }else{
                            day=day+31-N;
                        }
                    }
                }
            }else{
                ///////////////////////////////////////////////////////////////////////////////////
                if(month==12){
                    if((day-N)>31){
                        year=year+1;
                        month=1;
                        day=(day-N)-31;
                    }else{
                        day=day-N;
                    }
                }else{
                    if (month == 2) {
                        if (year % 4 == 0) {
                            if((day-N)>29){
                                month++;
                                day=(day-N)-29;
                            }else{
                                day=day-N;
                            }
                        } else {
                            if((day-N)>28){
                                month++;
                                day=(day-N)-28;
                            }else{
                                day=day-N;
                            }
                        }
                    }else{
                        if(month==4||month==6||month==9||month==11){
                            if((day-N)>30){
                                month++;
                                day=(day-N)-30;
                            }else{
                                day=day-N;
                            }
                        }else{
                            if((day-N)>31){
                                month++;
                                day=(day-N)-31;
                            }else{
                                day=day-N;
                            }
                        }
                    }
                }

     

                //day=day-N;
            }
            String str=String.valueOf(year);
            if(month<10){
                str=str+"-0"+String.valueOf(month);
            }else{
                str=str+"-"+String.valueOf(month);
            }
            if(day<10){
                str=str+"-0"+String.valueOf(day);
            }else{
                str=str+"-"+String.valueOf(day);
            }

            return str;
        }

    /*public static void main(String[] args) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");// 设置日期格式
        String mondayString=StringUtils.getMonday(df.format(new Date()))+ " 00:00:00";
        String sumdayString=StringUtils.getSunday(df.format(new Date()))+ " 23:59:59";
        String monday=DateUtils.getTime(mondayString)+"";
        String sumday=DateUtils.getTime(sumdayString)+"";
        //System.out.println(monday);
        //System.out.println(sumday);

    }*/
    
    public static String fillTemplet(String templet, String phstr, String[] paras){
        StringBuffer templetSB = new StringBuffer(templet);
        int i = 0;
        while(templetSB.indexOf(phstr) >= 0 && i < paras.length){
            templetSB.replace(templetSB.indexOf(phstr), templetSB.indexOf(phstr)+phstr.length(), paras[i]);
            i++;
        }
        return templetSB.toString();
    }
    //V1.6.6.1 RDPROJECT-226 liukun 2013-09-26 start
    /*public static String fillTemplet(String template){
        //V1.6.6.1 RDPROJECT-331 liukun 2013-10-12 start
        //模板中的'是非法字符,会导致无法提交,所以页面上用`代替
        template = template.replace('`', '\'');
        //V1.6.6.1 RDPROJECT-331 liukun 2013-10-12 end
        
        Map<String,Object> data=Global.getTransfer();
        try {
            return FreemarkerUtil.renderTemplate(template, data);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }*/
    //V1.6.6.1 RDPROJECT-226 liukun 2013-09-26 end
    
    //V1.6.5.3 RDPROJECT-142 liukun 2013-09-11 start
    public static int[] strarr2intarr(String[] strarr){
        int[] result = new int[strarr.length];
        for(int i=0;i<strarr.length;i++)
        {
           result[i] = Integer.parseInt(strarr[i]);
        }
        return result;
    }
    
    /**
     * 大写字母转成“_”+小写
     * @param str
     * @return
     */
    public static String toUnderline(String str){
        char[] charArr=str.toCharArray();
        StringBuffer sb=new StringBuffer();
        sb.append(charArr[0]);
        for(int i=1;i<charArr.length;i++){
            if(charArr[i]>='A'&&charArr[i]<='Z'){
                sb.append('_').append(charArr[i]);
            }else{
                sb.append(charArr[i]);
            }
        }
        return sb.toString().toLowerCase();
    }
    
    
    /**
     * 根据身份证计算性别
     * @param cardId
     * @return
     */
    public static int getSexByCardid(String cardId) {
        /*String sexNum = "";
        if (cardId.length() == 15) {
            sexNum = cardId.substring(13, 14);
        } else {
            sexNum = cardId.substring(16, 17);
        }
        
        if (Integer.parseInt(sexNum) % 2 == 1) {
            return 1;
        } else {
            return 0;
        }*/
        int sexNum = 0;
        if (cardId.length() == 15) {
            sexNum = cardId.charAt(13);
        } else {
            sexNum = cardId.charAt(16);
        }
        if (sexNum % 2 == 1) {
            return 1;
        } else {
            return 0;
        }
    }

    /**
     * 根据身份证计算生日
     * @param cardId
     * @return
     */
    public static String getBirthdayByCardid(String cardId) {
        String birth = null;
        if (cardId.length() == 15) {
            birth = cardId.substring(6, 12);
        } else {
            birth = cardId.substring(6, 14);
        }
        SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMdd");
        SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
        String birthday = null;
        try {
            birthday = sf2.format(sf1.parse(birth));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return birthday;
    }
    
    public static String getNullStr(Object obj) {
        if(obj==null) {
            return "";
        }
        return obj.toString();
    }
    
       public static String getFileSuffixName(String fileName){
          String suffix = null;
          if (fileName != null) {
              int last = fileName.lastIndexOf('.');
              suffix = fileName.substring(last);
          }
          return suffix;
      }
       /**
        * 格式化数字
        * @param num
        * @return
        */
       public static String getFormatNumber(String num){
           int number=Integer.parseInt(num);
           if(Integer.parseInt(num) >= 100000) {
                BigDecimal accountB = new BigDecimal(number);
                return accountB.divide(new BigDecimal(10000),2,BigDecimal.ROUND_HALF_DOWN).stripTrailingZeros().toPlainString()+"万元";
            } else {
                return number+"元";
            }
        }

}
  

 

posted @ 2018-08-22 17:52  龙芳伟  阅读(2858)  评论(0编辑  收藏  举报