美文网首页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