计算中英文混合字符串的字节长度

问题描述:  注册页面,注册人名称允许中文不超过15字英文不能超过30字


问题分析: 一个汉字=2个字节,一个英文字符=1个字节;汉字为双字节字符,英文为单字节字符


解决方式: 循环字符串,根据单双字节分别累加得出字符串长度.

eg1:

code:  javascript 

//获取字符串最终长度,区分中英文
     function len(str) {
         var len = 0;
         if (str != null && str.length > 0) {
            for (var i=0; i<str.length; i++) {   
               var c = str.charCodeAt(i);                
				//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { //非中文长度1 len++; } else {  
                              //双字节加2
//非中文长度2 len+=2; } } } return len; }

eg2:

把双字节的替换成两个单字节的然后再获得长度

 

var str = "我叫mt我叫mt";
if (typeof str != "string")str += "";
var len= str.replace(/[^\x00-\xff]/g,"01").length;
if(len>30){
    YUI.Validator.TIPS['companyname3'].error = "最多输入15个中文字符或30个英文,空格和数字,不能以空格开头。"
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值