美文网首页1024
JAVA 判断是否连续字母或者数字

JAVA 判断是否连续字母或者数字

作者: 圆梦人生 | 来源:发表于2017-05-28 10:52 被阅读595次

    来源:http://itssh.cn/post/943.html

    JAVA实现连续字母或者数字:
    实现思路:统一转成ASCII进行计数判断,纯数字、纯字母
    //纯数字(数字0 -- 数字9,对应ASCII为48 -- 57)
    //大写纯字母(大写字母A -- 大写字母Z,对应ASCII为65 -- 90)
    //小写纯字母(小写字母a -- 小写字母z,对应ASCII为97 -- 122)

    案例:

    package cn.sunmeng.utils;
    
    /**
     * @ClassName: SimpleLetterAndNumCheck.java
     * @Description: JAVA实现连续字母或者数字:<br/>
                    实现思路:统一转成ASCII进行计数判断,纯数字、纯字母<br/>
                            //纯数字(数字0 -- 数字9,对应ASCII为48 -- 57)<br/>
                            //大写纯字母(大写字母A -- 大写字母Z,对应ASCII为65 -- 90)<br/>
                          //小写纯字母(小写字母a -- 小写字母z,对应ASCII为97 -- 122)<br/>
     * @author: SM(sm0210@qq.com)
     * @date: 2017年5月28日 上午10:37:22
     */
    public class SimpleLetterAndNumCheck {
    
        /**
         * SM 校验字符串连续多少位是纯数字或者纯字母,默认6位(字母区分大小写)
         * @param password 密码
         * @return
         */
        public static boolean simpleLetterAndNumCheck(String value){
            //
            return SimpleLetterAndNumCheck.simpleLetterAndNumCheck(value, 6);
        }
        /**
         * SM 校验字符串连续多少位是纯数字或者纯字母,默认6位(字母区分大小写)
         * @param password 密码   
         * @param length    校验长度,默认6为
         * @return
         */
        public static boolean simpleLetterAndNumCheck(String value, int length){
            //是否不合法
            boolean isValidate = false;
            //
            int i = 0;
            //计数器
            int counter = 1;
            //
            for(; i < value.length() -1;) {
                //当前ascii值
                int currentAscii = Integer.valueOf(value.charAt(i));
                //下一个ascii值
                int nextAscii = Integer.valueOf(value.charAt(i + 1));
                //满足区间进行判断
                if( (SimpleLetterAndNumCheck.rangeInDefined(currentAscii, 48, 57) || SimpleLetterAndNumCheck.rangeInDefined(currentAscii, 65, 90) || SimpleLetterAndNumCheck.rangeInDefined(currentAscii, 97, 122)) 
                        && (SimpleLetterAndNumCheck.rangeInDefined(nextAscii, 48, 57) || SimpleLetterAndNumCheck.rangeInDefined(nextAscii, 65, 90) || SimpleLetterAndNumCheck.rangeInDefined(nextAscii, 97, 122)) ) {
                    //计算两数之间差一位则为连续
                    if(Math.abs((nextAscii - currentAscii)) == 1){
                        //计数器++
                        counter++;
                    }else{
                        //否则计数器重新计数
                        counter = 1;
                    }
                }
                //满足连续数字或者字母
                if(counter >= length) return !isValidate;
                //
                i++;
            }
            
            //
            return isValidate;
        }
        
        /**
         * SM 判断一个数字是否在某个区间
         * @param current 当前比对值
         * @param min   最小范围值
         * @param max   最大范围值
         * @return
         */
        public static boolean rangeInDefined(int current, int min, int max) {
            //
            return Math.max(min, current) == Math.min(current, max);
        }
        
        /**
         * 
         * @param args
         */
        public static void main(String[] args) {
            //
            //String str = "1234677A!@#B0abcdeg123456DDzZ09";
            //连续不合法区间值校验
            String str = ":;<=>?@A";
            //
            boolean validate = SimpleLetterAndNumCheck.simpleLetterAndNumCheck(str);
            //
            if(validate){
                System.out.println("连续字母或者数字");
            }else {
                System.out.println("合法的校验");
            }
        }
    }
    

    来源:http://itssh.cn/post/943.html

    相关文章

      网友评论

        本文标题:JAVA 判断是否连续字母或者数字

        本文链接:https://www.haomeiwen.com/subject/cfacfxtx.html