页面中汉字,数字,字符的长度

在页面控件中MaxLength控制的是字符数量,所以在页面中得到的汉字,数字,字母的Length都是1,但是在数据库中汉字是2。

当要在页面做限制是,原理:

该字符在Unicode字符集中的编码值来进行比较。例如,字符A的编码是65,字符B的编码是66,依此类推。小写字母从97开始编码,即字母a的编码是97,字母b的编码是98,依此类推。数字字符则是从48开始编码,字符0的编码是48,而字符9的编码是57。还有一些特殊符号如+、-等,在此就不举例了。

我们使用charCodeAt(char)来得到变量char所对应的Unicode编码,根据上面所描述的,英文、数字及一些特殊符号的Unicode编码是已知的,而且有一个范围,因此可以认为,不在此范围之内的字符,都可认为它是汉字,按长度为2来计算。

处理方式:

function a()
        {
            var b="厂12'\"sdA1厂12'\"sdA1厂12'\"sdA1厂12'\"sdA1厂12'\"sdA1";
            alert("长度" + getLength(b));
        }
        function getLength(str) 
        {     
            var len = str.length;    
            var reLen = 0; 
            for (var i = 0; i < len; i++) 
            {
                if (str.charCodeAt(i) < 27 || str.charCodeAt(i) > 126) 
                {
                    // 全角
                    reLen += 2;
                }
                else {
                    reLen++;
                }
            }
            return reLen;
         } 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值