美文网首页
Unicode 全角字符 & 半角字符

Unicode 全角字符 & 半角字符

作者: jellyb | 来源:发表于2018-09-13 16:21 被阅读135次

Unicode校验

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UnicodeMaxImpl.class)
public @interface UnicodeMax {



    int minLength();

    int maxLength();

    String message() default "数据长度不合法!";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};


}


校验实现逻辑

public class UnicodeMaxImpl implements ConstraintValidator<UnicodeMax, String> {


    private int minLength;
    private int maxLength;

    @Override
    public void initialize(UnicodeMax constraintAnnotation) {
        this.maxLength = constraintAnnotation.maxLength();
        this.minLength = constraintAnnotation.minLength();
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (StringUtils.isEmpty(value)) {
            return true;
        }
        int length = getCharLength(value);
        if (length < minLength || length > maxLength) {
            return false;
        }
        return true;
        //return Pattern.matches("^(([\\u4e00-\\u9fa5]|[\\w\\s]|[\\pP|\\pS])*)?$", value);
    }

    public static int getCharLength(String value){
        int halfCharCount = 0;
        int allCharCount = 0;
        char[] chars = value.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            String temp = String.valueOf(chars[i]);
            /**
             * 判断是全角字符
             */
            if (temp.matches("[^\\x00-\\xff]")) {
                allCharCount ++;
            }
            /**
             *  判断是半角字符
             */
            else {
                halfCharCount ++;
            }
        }
        return halfCharCount + 2 * allCharCount;
    }
}

^(([\\u4e00-\\u9fa5]|[\\w\\s]|[\\pP|\\pS])*)?$

url:全角半角逻辑-> https://blog.csdn.net/u012815136/article/details/81408165

相关文章

  • Unicode 全角字符 & 半角字符

    Unicode校验 校验实现逻辑 url:全角半角逻辑-> https://blog.csdn.net/u0128...

  • php字符串处理之全角半角转换

    半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路。 一、概念 全角字符unicode编码从6528...

  • 全角和半角的区别

    什么是全角和半角? (1) 全角:指一个字符占用两个标准字符位置。全角占两个字节。 不管是半角还是全角,汉字...

  • SQL Server 全角半角转换

    哪些字符是有全角和半角之分的? 首先,中文是只有全角,没有半角之分,所以转换的时候可以忽略掉中文字符。 英文字符与...

  • 文本函数ASC和WIDECHAR

    ASC函数 1、用途: 将全角字符转换为半角字符 。 2、语法: ASC(text) 参数: Text 要进行半角...

  • 转:python判断unicode是否是汉字,数字,英文,或者其

    下面这个小工具包含了 判断unicode是否是汉字,数字,英文,或者其他字符。 全角符号转半角符号。 unicod...

  • 【kotlin】日文假名的全半角转换

    先分享一个unicode一览的网址:链接在里面可以找到各个字符对应的unicode对应的十六进制数 1、 全角半角...

  • js 日语全半角转换

    1、js 日语全半角转换 客户的需求是,输入半角字符或日语假名,筛选出来的结果显示包含该字符的半角形式和全角形式的...

  • 测试理论--web测试方法总结

    一、输入框 1、字符型输入框: (1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%…...

  • 测试总结-web测试方法总结

    一、输入框 1、字符型输入框: (1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@#¥%…...

网友评论

      本文标题:Unicode 全角字符 & 半角字符

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