Java 中一个中文所占字节

本文介绍了一种针对用户名输入的校验方法,确保输入符合3到20个英文字符(或2到6个中文字符)的规定。文章通过具体代码示例解释了如何使用不同的字符编码(如UTF-8和GB2312)来准确计算字符串长度,并验证输入的有效性。

最近做项目要求一个表单字段的限制是(3~20个英文(2~6个中文)),之前总是以为一个中文占两个字节,用“字符串”.getByte() 获取长度然后判断,经调试总是出错,后来发现utf-8下一个汉字是占3个字节的,而gb2312下是占两个字节的,所以转换了一下,完美验证。

 public static final boolean checkUserName(String name) {

//     char [] charArr = name.toCharArray();

       int a = 0;

       try {

             a = name.getBytes("gb2312").length;

       } catch (UnsupportedEncodingException e) {

             e.printStackTrace();

      }

        if (a > 2 && name.getBytes().length < 21) {

         Pattern pattern = Pattern.compile("^[a-zA-Z\\u4e00-\\u9fa5][\\u4e00-\\u9fa5\\w\\.-]*$");

            Matcher matcher = pattern.matcher(name);

            if (!matcher.find())

            {

                return false;

            }

            return true;

        }

        return false;

    }

转载于:https://my.oschina.net/u/1047462/blog/201151

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值