js获取一个字符串的字节长度

  • Post author:
  • Post category:其他


因为中文字占两个字节,英文占一个字节。

方法1:把中文字替换成两个字母。然后计算长度。

方法2:直接判断中文,长度+2。

运用的方法大同小异。都是通过正则表达式,写unicode编码。

方法1:
var str = '2333哈哈';

var length=0;

str = str.replace(/[\u4e00-\u9fa5]/g,"aa");

alert(str);
alert(str.length);

方法1中

[\u4e00-\u9fa5]:匹配中文字符

[^\x0000-\x00ff]:匹配双字节字符(包括中文字)

正则表达示 /[\u4e00-\u9fa5]/g 的 g必须要,global,全部都要检查的意思。没有的话输出的是(2333aa哈)

方法2:
function getLength(str){

            var length=0;
            var reg = /[\u4e00-\u9fa5]/;
            for(var i=0;i<str.length;i++){

                if(reg.test(str.charAt(i))){

                    length+=2;

                }else{

                    length++;
                }
            }
            return length;
        }
        var str = '2333哈哈哈';
        console.log(getLength(str));

方法2中的函数 str.charAt(i) : 获取i位置的字符

扩展:

charCodeAt(i) : 获取字符串的num位置的字符的unicode编码

fromCharCode(i) : 获取unicode编码对应的字符



版权声明:本文为ding43930053原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。