JS取字符串长度含中文不准的解决方案
前段时间用到文字长度获取的需求
再晚上查了很多现在分享出来 强烈推荐第三种方法!!!
方法一
var GetLength = function(str) {
///<summary>获得字符串实际长度,中文2,英文1</summary>
///<param name="str">要获得长度的字符串</param>
var realLength = 0, len = str.length, charCode = -1;
for (var i = 0; i < len; i++) {
charCode = str.charCodeAt(i);
if (charCode >= 0 && charCode <= 128)
realLength += 1;
else
realLength += 2;
}
return realLength;
};
alert(GetLength('测试测试ceshiceshi));
测试了不好用
方法二
var GetLength = function(str) {
return str.replace(/[\u0391-\uFFE5]/g,"aa").length; //先把中文替换成两个字节的英文,在计算长度
};
alert(GetLength('测试测试ceshiceshi'));
还是不好用
方法三 (这个牛逼,包含中文,字母,数字,特殊字符)
怎么个原理呢
首先我们用split('')将字字符串分割成数组,然后length一下不就出来长度了嘛[坏笑]
var GetLength = function(str) {
return str.split('').length;
};
alert(GetLength('测试测试ceshiceshi'));
快去试试吧~