JS获取字符串实际长度(汉字算两个字符,字母数字算一个)

方法一:使用正则表达式,代码如下

    getByteLen(val) {
      var len = 0;
      for (var i = 0; i < val.length; i++) {
        var a = val.charAt(i);
        if (a.match(/[^\x00-\xff]/ig) != null)
        {
        len += 2;
        }
        else
        {
        len += 1;
        }
       }
      return len;
    }

方法二:使用字符unicode判断:方法如下

var l = str.length;
var blen = 0;
for(i=0; i<l; i++) {
if ((str.charCodeAt(i) & 0xff00) != 0) {
blen ++;
}
blen ++;
}
function getByteLen(val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var length = val.charCodeAt(i);
if(length>=0&&length<=128)
{
len += 1;
}
else
{
len += 2;
}
}
return len;
}

方法三(更更简洁的方法)

var jmz = {};
jmz.GetLength = function(str) {
    return str.replace(/[\u0391-\uFFE5]/g,"aa").length;   //先把中文替换成两个字节的英文,在计算长度
};  
 
alert(jmz.GetLength('测试测试ceshiceshi'));
posted @ 2022-03-11 10:48  寒冷的雨呢  阅读(1013)  评论(0编辑  收藏  举报